Facebook权限对话框(JavaScript sdk)

时间:2011-10-21 07:15:59

标签: facebook-graph-api facebook facebook-javascript-sdk

我正在使用OAuth Dialog for 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>

请告诉我它有什么不对吗?

4 个答案:

答案 0 :(得分:1)

您没有看到它的原因是因为申请流程已经变成了两个步骤。

  1. 由此人接受登录您的申请。
  2. 作为此人接受您的扩展许可,这是回调网址发挥作用的地方。
  3. 可以找到文档here

    因此,未调用回调的原因是因为两步过程。我建议将响应附加到被调用的第二页。

    我不确定JS SDK是如何工作的,但这是我设法做到的。

    古德勒克。

答案 1 :(得分:0)

在调用授权窗口之前,您需要将fb令牌添加到网址以将您的用户标识为fb。

我想尝试这个来获取令牌:FB.getAccessToken();

答案 2 :(得分:0)

我在这里遇到同样的问题。文档说只有这个应用程序的开发人员/测试人员才能获得发布权限,但我可以设法只使用用于创建应用程序的id。其他测试用户(即使是授权开发人员)也无法通过“添加时间线”阶段。

这可能是一个主要的错误。

答案 3 :(得分:0)

我在这个问题上挣扎了好几个小时,而我可爱的同事帮助我解决了这个问题。确保在调用登录后不刷新页面。基本上,不要做类似下面的事情:

FB.login(...);
window.location.refresh();

在FB.login!

的回调中包含刷新代码

伙计,我觉得很愚蠢,但有时候你会感到困惑,忘记了回调在代码执行顺序方面是如何运作的。