我整个上午一直在与这场斗争。
我实际上是想让自定义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登录按钮有效,但我需要通过此流程来操作“无摩擦”行为(即,我无法点击另一个按钮)答案 0 :(得分:1)
不要将FB.ui与方法:“permissions.request”一起使用 - 只需使用FB.login,并使用您需要的(附加)权限范围设置options参数。
https://developers.facebook.com/docs/reference/javascript/FB.login/