Facebook 安卓 sdk 3.0 SSO

Posted

技术标签:

【中文标题】Facebook 安卓 sdk 3.0 SSO【英文标题】:Facebook android sdk 3.0 SSO 【发布时间】:2012-10-15 19:37:28 【问题描述】:

在以前版本的 Facebook SDK 中,我们可以使用令牌检查用户是否仍然登录。在新的 3.0 版本中,除了调用openSession() 来检查用户是否仍然使用SSO 登录之外,我找不到其他方法。但是openSession() 会自动调用登录,如果用户没有保存并且我不希望这样。我只想检查 SSO。我该怎么做?

【问题讨论】:

我也需要这个。找不到。什么鬼? 一旦你创建了一个Session,你可以通过调用session.getState来查看Session对象的状态,如果状态是CREATED_TOKEN_LOADED状态,则说明有已保存且有效的token,你可以直接调用 open() 无需任何用户交互。 或者,您可以调用 Session.openActiveSession(Context context),根据 javadocs,它只会在不需要用户交互的情况下打开会话。 在什么场景下你会使用 openActiveSessionFromCache 【参考方案1】:

我创建了一个辅助函数来检查用户是否在我的应用中仍然为我登录(或实际上有一个活动会话):

public static boolean isActive() 
    Session session = Session.getActiveSession();
    if (session == null) 
        return false;
    
    return session.isOpened();

【讨论】:

这对我不起作用,我在会话中不断收到“Session state:CLOSED, token:AccessToken token:ACCESS_TOKEN_REMOVED permissions:[], appId:234242323423434” 我可以看到有些人对此有疑问。首先确保您的密钥在 FB 应用程序中是正确的。我记得对此有一些问题。我目前对我有用的流程是 1. 检查 isActive();不? 2. 调用 openSession() 3. if error & session!=null ->session.closeAndClearTokenInformation(); 在什么场景下你会使用 openActiveSessionFromCache 我使用的是 3.23.0 版本。 Session.getActiveSession() 在我签入初始屏幕时始终返回 null,尽管用户之前已登录。【参考方案2】:

或者,您可以调用 Session.openActiveSession(Context context),根据 javadocs,它只会在不需要用户交互的情况下打开会话。 ——李明

【讨论】:

以上是关于Facebook 安卓 sdk 3.0 SSO的主要内容,如果未能解决你的问题,请参考以下文章

使用 3.0 SDK 获取 Facebook 个人资料图片

Facebook SDK 3.0 自动登录

使用 Facebook-Android SDK 3.0 正确请求发布权限

将群组页面与 Facebook SDK 3.0 集成

Facebook iOS SDK 3.0 贴在墙上

Xcode 4.2 和 Facebook SDK 3.0 教程