繁体   English   中英

Facebook App Iframe OAuth登录/权限错误-可以避免吗?

[英]Facebook App Iframe OAuth Login / Permissions Bug - possible to avoid?

我的问题与此处概述的问题相同,iframe canvas应用程序的Facebook OAuth登录显示徽标图像和转到Facebook.com标题,而不是登录 -我已经能够使用接受的答案中提供的解决方法来确保用户正确请参阅首次使用该应用程序时的权限框。

但是,我的问题是,在应用程序的初始“安装”之后,这种形式的重定向对用户来说是非常破坏性的-明显地,它们已从Facebook网站上撤走,然后被重定向回。 确实破坏了用户体验。 如果我使用我正在使用的CodeIgniter库提供的标准登录方法( http://www.haughin.com/code/facebook/ ),则该应用程序的登录/加载是无缝的-但是我遇到了上述问题首次使用该应用程序。

有没有一种方法可以检测用户是否安装了应用程序,因此可以对应用程序“安装”以外的每个实例使用主登录方法?

在iframe canvas应用中,如果用户已经对您的应用进行了授权,那么signed_request将包含user_id和oauth_token,因此无需将用户重定向到“授权”页面。 以下是signed_request可能包含的几个示例:

用户尚未授权应用:

signed_request = 
                {
                    "algorithm":"HMAC-SHA256",
                    "issued_at":1299083443,
                    "user":{"country":"ca","locale":"en_US","age":{"min":21}
                }

用户已授权应用:

signed_request =   {
                    "algorithm":"HMAC-SHA256",
                    "expires":1299092400,
                    "issued_at":1299085507,
                    "oauth_token":access_token,
                    "user":{"country":"ca","locale":"en_US","age":{"min":21}},
                    "user_id":user_id
                }

如果没有看到user_id和oauth_token,则可以使用JavaScript window.top.location.href技术。 如果您确实看到了user_id和oauth_token,则无需要求用户对您的应用程序进行身份验证,因为他/她已经这样做了。 因此,换句话说,如果用户在1月1日对您的应用进行了授权,然后在1月10日又回来了,那么Signed_request在1月10日访问时将已经包含user_id和oauth_token。

这是我使用的技术。 我希望这有帮助。

针对BrynJ的以下评论2011年3月7日更新

要获取signed_request,您必须确保在应用程序设置中启用了“ OAuth 2.0 for Canvas”(可以在http://www.facebook.com上编辑设置时在“高级”标签中找到) 。 /developers/apps.php )。 默认情况下,所有新应用都启用此功能,但是如果您有旧应用,则需要自己启用它。 另外,请注意同一“高级”选项卡中的“画布的POST”设置。 如果启用了此功能,那么signed_request将在POST正文中传递(例如,signed_request = 12345)。 如果已禁用,则signed_request将在查询字符串中传递。

获得signed_request后,您将需要对其进行验证和解码以获取user_id和oauth_token。 Facebook在这里有一个很好的例子:

http://developers.facebook.com/docs/authentication/signed_request/

顺便说一句,您将要启用“画布发布”,因为Facebook将于3月12日将所有iframe应用切换到此功能。更多信息,请访问: http//developers.facebook.com/docs/canvas/post/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM