您好我在Android手机上使用facebook sdk for android并使用单点登录。当我登录facebook应用程序时,它的工作正常,我的应用程序也登录了。 对于注销我遇到了困惑。
我实施的方法是从应用程序的用户首选项中恢复访问令牌和过期日期,并检查会话的有效性。如果过期,应用程序将调用facebook.authorized功能,一旦授权访问令牌,过期日期将再次更新。
在处理注销时,我发现有些事情有些混乱。
1)当我从facebook应用程序注销时,我的应用程序仍然可以通过并请求用户详细信息。虽然我在我的应用程序上保存的访问令牌与facebook应用程序没有关系,但我认为在请求数据时至少会给我一个错误。但它没有给我错误。
它是否应该这样做。从Facebook应用程序注销不会影响我存储在应用程序中的访问令牌。
2)当我从我的应用程序而不是facebook应用程序注销时,facebook应用程序将不会自动注销。
答案 0 :(得分:9)
Facebook访问令牌和您的应用访问令牌是独立且不同的,因此完全有可能一个有效并允许访问而另一个无效且需要重新授权。
如果Facebook应用程序已登录但您的应用程序未登录,那么Facebook SDK将使用现有的Facebook应用程序登录为您的应用程序获取新的访问令牌而无需进行身份验证,但这仍未链接到Facebook应用程序登录任何方式的令牌。
如果未安装Facebook应用程序或未登录,则Facebook SDK将带您到Facebook网站进行初始身份验证,但这不会记录Facebook应用程序,因为您的访问权限之间没有任何关联令牌和Facebook访问令牌。
总而言之 - 您的理解是正确的。除了您的应用程序尝试对用户进行身份验证之外,两个应用程序之间没有交互,然后Facebook应用程序将充当代理,只要Facebook登录,您就可以在不进行身份验证的情况下获得访问权限。之后,没有进一步的互动和你观察到的是预期和预期的行为。
答案 1 :(得分:0)
我有同样的问题。我正在考虑创建一个" isLogged" var并存储它,以便当有人注销并重新启动应用程序时,它甚至不会验证用户是否已绕过facebook的会话验证进行了记录。