Facebook 权限对话框 (JavaScript sdk)
Posted
技术标签:
【中文标题】Facebook 权限对话框 (JavaScript sdk)【英文标题】:Facebook permission dialog (JavaScript sdk) 【发布时间】:2011-10-21 07:15:59 【问题描述】:我正在使用 OAuth 对话框获取 Facebook 访问用户电子邮件、生日和其他详细信息的权限,但是当我运行此应用程序 URL 时,https://apps.facebook.com/projectatestapp/
(登录到 Facebook 时)我看到此登录到应用程序窗口,上面写着:
您正在以 Nina Sewart 的身份登录 testapp。登录不会将此应用的活动添加到 Facebook。
带有登录和取消按钮instead of Permission window with Allow and Don't Allow button
这是我的代码
<html xmlns:fb="https://www.facebook.com/2008/fbml">
<body>
<script src="http://connect.facebook.net/en_US/all.js"></script>
<div id="fb-root"></div>
<script>
FB.init(
appId: '[My app id]',
xfbml: true,
cookie: true,
oauth: true
);
FB.login(
scope: 'email,user_birthday',
);
</script>
<a href="https://www.facebook.com/dialog/oauth/?scope=email,
user_birthday&
client_id=148244388606048&
redirect_uri=https://apps.facebook.com/projectatestapp/test2.html&
response_type=token" target="_top">test</a>
</body>
</html>
请告诉我其中有什么问题?
【问题讨论】:
【参考方案1】:您没有看到它的原因是因为申请过程已成为一个两步过程。
-
该人接受登录您的应用程序。
作为人接受您的扩展权限,这就是回调 url 发挥作用的地方。
可以在here 找到文档。
所以你的回调没有被调用的原因是因为两步过程。我建议将响应附加到被调用的第二页。
我不确定 JS SDK 是如何工作的,但这是我设法做到的。
祝你好运。
【讨论】:
【参考方案2】:您需要在调用自动化窗口之前将 fb 令牌添加到 url 以向 fb 识别您的用户。
我想试试这个来获取令牌:FB.getAccessToken();
【讨论】:
通过使用 response.authResponse.accessToken;允许/不允许窗口不再存在.. 我看到的是:当我点击 url 时,我看到一个新窗口说 Nida testapp 需要:您的电子邮件地址 (nidaalikhawaja@hotmail.com) 您的生日登录不会将此应用的活动添加到 Facebook。 连同登录和取消按钮... Facebook 是否有可能将允许和不允许窗口更改为此? 我也有同样的问题:facebook.***.com/questions/7847029/…【参考方案3】:我在这里也有同样的问题。文档说只有该应用程序的开发人员/测试人员才能获得发布权限,但我可以设法使其仅与用于创建应用程序的 id 一起工作。其他测试用户(即使是授权开发人员)无法通过“添加到时间线”阶段。
这可能是一个重大错误。
【讨论】:
【参考方案4】:我为这个问题苦苦挣扎了几个小时,我可爱的同事刚刚帮我解决了这个问题。确保在调用 login 后不刷新页面。基本上,不要做下面这样的事情:
FB.login(...);
window.location.refresh();
在 FB.login 的回调中包含刷新代码!
伙计,我觉得自己很愚蠢,但有时你会感到困惑,忘记了回调在代码执行顺序方面是如何工作的。
【讨论】:
以上是关于Facebook 权限对话框 (JavaScript sdk)的主要内容,如果未能解决你的问题,请参考以下文章
Facebook 权限对话框 (JavaScript sdk)