[英]Facebook android sdk 3.0 login issue
我最近将代码升级为使用FB android SDK 3.0。 我的应用程序有四个活动,并且不使用片段。 奇怪的是,我的代码在android 2.3.4上没有任何问题。 但在android 4.0.4中,会话状态始终为“ OPENING”。 我正在使用UiLifeCycleHelper,下面是启动器活动中的代码。
SharedPreferences mPrefs;
String access_token = mPrefs.getString("access_token", null);
Session currentSession = Session.getActiveSession();
if(currentSession == null || currentSession.getState().isClosed())
{
if(access_token!=null)
{
SharedPreferences.Editor editor = mPrefs.edit();
//One time upgrade from FB SDK 2.0 to 3.0
editor.putString("access_token", null);
editor.commit();
AccessToken new_access_token = AccessToken.createFromExistingAccessToken(access_token, null, null, null, null);
currentSession.open(new_access_token, myCallback);
Session.setActiveSession(currentSession);
}
else
{
Session.openActiveSession(this, true, myCallback);
}
}
else if (!currentSession.isOpened())
{
OpenRequest openRequest = new OpenRequest(this).setCallback(myCallback);
openRequest.setDefaultAudience(SessionDefaultAudience.FRIENDS);
openRequest.setPermissions(Arrays.asList(permissions));
openRequest.setLoginBehavior(SessionLoginBehavior.SSO_WITH_FALLBACK);
currentSession.openForRead(openRequest);
}
else if(currentSession.isOpened())
{
handleRequest(currentSession);
}
StatusCallback myCallback = new StatusCallback()
{
@Override
public void call(Session session, SessionState state, Exception exception)
{
handleRequest(session);
}
};
public void handleRequest(Session activeSession)
{
Request new_request = new Request(activeSession, "/me/friends", null, null, new Callback()
{
@Override
public void onCompleted(Response response)
{
//Process the response and make UI changes.
}
});
}
首先,我怀疑问题是由于旧版Facebook应用(1.9)引起的。 所以我升级到了最新版本(3.2)。 问题仍然存在于Android 4.0.4上。
这是我在onActivityResult回调中的代码
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);
uihelper.onActivityResult(requestCode, resultCode, data);
}
有什么问题吗?
您还记得添加onActivityResult
代码吗?
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
uiHelper.onActivityResult(requestCode, resultCode, data);
}
也看看另一个问题
我自己解决了。 刚刚在myCallback中注释掉了handleRequest。
StatusCallback myCallback = new StatusCallback()
{
@Override
public void call(Session session, SessionState state, Exception exception)
{
//handleRequest(session);
}
};
这次,我的应用在android 2.3.4和4.0.4上都没有太大问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.