android - Session.getActiveSession() 在启动应用程序时返回 null,尽管我已连接

标签 android facebook-android-sdk

我在我的应用程序中使用 com.facebook.widget.UserSettingsFragment 来管理登录/注销 Facebook:

UserSettingsFragment userSettingsFragment = new UserSettingsFragment();
Session session = Session.getActiveSession();
if(session==null || session.isClosed()){
    userSettingsFragment.setPublishPermissions(Arrays.asList("publish_actions"));
}
fragmentTransaction.replace(R.id.content_container, userSettingsFragment, "userSettingsFragment");

在另一个 Fragment(但相同的 Activity)中,在 Facebook 上发布之前,我检查我是否使用

Session session = Session.getActiveSession();
if (session != null && session.isOpened()){
    publishOnFacebook(intent.getExtras());
}

当我启动我的应用程序并尝试发布时,尽管我之前登录过,但我总是得到一个 null Session。当我启动 UserSettingsFragment 时,它会显示我已连接。

如果我真的连接了,Session.getActiveSession(); 怎么会是 null

此外,如果我在 UserSettingsFragment 之后直接开始发布 Fragment,我会得到正确的 Session,即:

1 start the app
2 call `Session.getActiveSession()` in another `Fragment` returns `null`
3 start `UserSettingsFragment` shows that I'm log

但是

1 start the app
2 start `UserSettingsFragment` shows that I'm log
3 call `Session.getActiveSession()` in another `Fragment` returns a session

有人可以帮忙吗?

最佳答案

好的,我刚刚读到有关 openActiveSessionFromCache 的内容(虽然不是来自 Facebook 文档):

Session session = Session.getActiveSession(); 

if(session==null){                      
    // try to restore from cache
    session = Session.openActiveSessionFromCache(getActivity());
}

if(session!=null && session.isOpened()){    
    publishOnFacebook(intent.getExtras());  
}
else{
    login();
}

关于android - Session.getActiveSession() 在启动应用程序时返回 null,尽管我已连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18295998/

相关文章:

android - java.lang.IllegalStateException : ViewPager has not been bound (Using JakeWharton ViewPager Indicator) 错误

android - Android:通知声音持续时间

Android facebook 4.0.0 分享对话框不分享内容

android - 如何使用 facebook SDK for android 获取用户生日和在线状态

Android - Facebook 集成 : Impossible to Import com. facebook.Session

java - 可以使用 Java 或 Android 进行自动化测试

android - 更改主要 Activity 中的 ListView 字段属性

android - Intent 中传递上下文

java - 执行 facebook Graph API 请求时出现 android.os.NetworkOnMainThreadException

android - 如何使用 Facebook Android SDK 切换授权的 facebook 用户?