无法获得FB.ui方法:oauth工作

时间:2012-06-23 14:11:56

标签: facebook facebook-javascript-sdk facebook-opengraph facebook-oauth fb.ui

我整个上午一直在与这场斗争。

我实际上是想让自定义Open Graph Actions起作用。我已经成功了,从这里和那里到处拼凑了一些信息,现在我有一个按钮,用以下流程发布“旺旺”动作:

> User Clicks Button
> FB.api checks response.
    > if response code is 200 the user has not granted publish_stream permission
        > call FB.ui({ method:
                  "permissions.request",
                  "perms": 'email,publish_stream'
                }
        > call back to original function and post to stream
    > if user has already granted permission, then just publish

一切都很可爱。

我需要的是捕获用户根本没有登录Facebook的情况。

这似乎是响应代码2500,其中不存在访问令牌

所以我有这个代码片段,它抓住了那个案例

.....
} else if (((response.error.code) * 1) == 2500) {
    doLogin('publish_stream', postWant, itemId); 
    // post want being the original function and itemId being the item we are "wanting"
}

我的doLogin函数如下所示:

    function doLogin(permRequired, callingFunction, urlAppend) {
        FB.ui({ 
            method: 'oauth', 
            scope: 'email,' + permRequired
        },
        function (response) {
            // DO THINGS NOW WE'RE LOGGED IN
        });
    };

这与获取扩展权限的函数基本完全相同,如下所示:

    function getPermission(permRequired, callingFunction, urlAppend) {
        FB.ui({ method:
            "permissions.request",
            "perms": 'email,' + permRequired
        },
        function (response) {
            // DO THINGS NOW WE HAVE PERMISSION
        });
    };

后一个示例WORKS,但Login示例只是加载弹出窗口“抱歉,出错了,请稍后再试”

显然已经调用了FB.init,正确设置了APP,在FB.init中声明了APP_ID,等等,显然,其他工作正常。

FB登录按钮FB登录按钮有效,但我需要通过此流程来操作“无摩擦”行为(即,我无法点击另一个按钮)

1 个答案:

答案 0 :(得分:1)

不要将FB.ui与方法:“permissions.request”一起使用 - 只需使用FB.login,并使用您需要的(附加)权限范围设置options参数。

https://developers.facebook.com/docs/reference/javascript/FB.login/