我正在将“使用Facebook登录”集成到我的Android应用程序中,而且我正面临一个奇怪的问题,这是我第一次启动(,仅第一个)我的应用程序(刚刚安装新的新副本之后)我按下按钮后(但正常登录)Facebook回调没有被调用。如果我正常登录(或使用Facebook),然后再次登出,则回调会正常启动。Android“使用Facebook登录”回调没有被解雇
我需要回调做一些用户会话操作,所以我很生气,很多天都没有找到解决方案,所以我希望任何人都可以帮助我。我的facebookCallBackManager()函数在onCreate中调用。
在我的例子中,我需要getFacebookUserData()方法才能被解雇,但是设置断点和调试,甚至连onSucces都被解雇了。
提前致谢!
下面我贴我的回调代码在我ActivityLogin类:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
callbackManager.onActivityResult(requestCode, resultCode, data);
}
private void facebookCallBackManager() {
callbackManager = CallbackManager.Factory.create();
LoginButton btnFacebookLogin = (LoginButton) findViewById(R.id.btnFacebookLogin);
btnFacebookLogin.setReadPermissions("public_profile", "email", "user_friends");
btnFacebookLogin.registerCallback(callbackManager,
new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
GraphRequest.newMeRequest(
loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(JSONObject json, GraphResponse response) {
if (response.getError() != null) {
// handle error
} else {
getFacebookUserData(json);
}
}
}
).executeAsync();
}
@Override
public void onCancel() {
}
@Override
public void onError(FacebookException exception) {
if (!GeneralUtils.isOnline(oContext)){
GeneralUtils.showNoInternet(strTheme, oContext, ActivityLogin.this);
}else{
String strMessage=exception.getMessage();
GeneralUtils.showToast(strMessage, Toast.LENGTH_LONG, strTheme, ActivityLogin.this);
}
}
});
}
编辑1:
我忘了提我使用的SDK 4.23.0,所以SDK初始化不再需要。
编辑2:
更多可能有用的信息。
我ActivityMain是主要和默认之一,启动时,如果用户没有那么重定向到登录与下一行进行登录:
private void doLogin(){
Intent i = new Intent(getApplicationContext(), ActivityLogin.class);
i.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
this.startActivity(i);
}
当您初始化Facebook SDK时?你的活动是“SingleTask”|| “SingleTop”? –
你好@ Michal_196,谢谢你的回复。我忘了提及我使用的SDK 4.23.0和最新的SDK自动初始化,所以FacebookSdn.Initialize不再需要,关于它是什么样的活动,我不知道,不知道什么是“SingleTask或” SingleTop“:) –
我一直在阅读有关”SingleTask“和”SingleTop“,我没有在我的清单文件中定义它们,实际上我的活动声明如下: –