Android应用程序与Facebook登录未与Facebook应用程序安装
此代码运行良好当我卸载Facebook应用程序但未安装Facebook应用程序。我正在使用Facebook SDK 4.0。Android应用程序与Facebook登录未与Facebook应用程序安装
这是我的代码
package com.example.nhp04.gqfood;
import com.facebook.AccessToken;
import com.facebook.AccessTokenTracker;
import com.facebook.CallbackManager;
import com.facebook.FacebookCallback;
import com.facebook.FacebookException;
import com.facebook.FacebookSdk;
import com.facebook.Profile;
import com.facebook.login.LoginResult;
import com.facebook.login.widget.LoginButton;
public class Login extends AppCompatActivity implements Animation.AnimationListener {
private String info = "";
private LoginButton loginButton;
private CallbackManager callbackManager;
private AccessTokenTracker tracker;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FacebookSdk.sdkInitialize(getApplicationContext());
callbackManager = CallbackManager.Factory.create();
setContentView(R.layout.activity_login);
loginButton = (LoginButton)findViewById(R.id.login_button);
loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
AccessToken accessToken = loginResult.getAccessToken();
Profile profile = Profile.getCurrentProfile();
info = ("User ID: " +
loginResult.getAccessToken().getUserId() + "\n" + "Auth Token: " + loginResult.getAccessToken().getToken());
}
@Override
public void onCancel() {
info = ("Login attempt canceled.");
}
@Override
public void onError(FacebookException e) {
info = ("Login attempt failed.");
}
});
System.out.println(info);
tracker = new AccessTokenTracker() {
@Override
protected void onCurrentAccessTokenChanged(AccessToken oldAccessToken, AccessToken currentAccessToken) {
}
};
tracker.startTracking();
}
}
此功能来查看登录
public boolean isLoggedIn() {
AccessToken accessToken = AccessToken.getCurrentAccessToken();
return accessToken != null;
}
这对恢复和Stop方法
@Override
protected void onResume() {
super.onResume();
if (isLoggedIn()){
Intent home = new Intent(this, home.class);
startActivity(home);
}
}
@Override
protected void onStop() {
super.onStop();
tracker.stopTracking();
finish();
}
这是我onActivityResult
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
callbackManager.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
Intent home = new Intent(this, home.class);
startActivity(home);
} else {
Toast.makeText(getApplicationContext(), "Unable to login please check your internet connection",Toast.LENGTH_LONG).show();
}
}
你可以删除你的应用程序在你的Facebook应用程序。喜欢你可以打开Facebook应用程序去 设置>>账户设置>>应用程序>>你的应用程序>>删除。删除你的应用程序后,卸载你的应用程序。并重新安装它,并检查登录Facebook的工作与否。
请改变你的Facebook SDK版本,之后清理并重新构建应用程序,将工作
哪里是你onActivityResult()
代码。在onActivityResult()
您需要使用callbackmanager
。以下用户代码:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
callbackManager.onActivityResult(requestCode, resultCode, data);
}
上面将在片段/活动中起作用。请确保您有
1. facebook app installed on your testing device
2. In facebook developer account check whether you have mentioned
- correct package name : refer your android project manifestfile.xml
- check that have you mentioned correct launcher class
- Check that you have given correct debug/release hash key
3. Cross check your facebook application id and that mentioned in your manifestfile.xml facebook meta data are same
在您的代码如下
变化setContentView(...)
后创建你callbackmanager
;
将其更改为以下 FacebookSdk.sdkInitialize(getApplicationContext()); AppEventsLogger.activateApp(this); setContentView(R.layout.activity_login); callbackManager = CallbackManager.Factory.create();
记住,如果这是你的Facebook问题,那么你的问题在搜索其他的事情就在于这不浪费时间内。在Facebook的sdk的回调中也登录失败的方法。
发表评论,如果您仍然有问题
我已经做到了这一点,我只是提供这个问题的质询问题,因此将有助于相互学习更多的东西 –