尝试使用Facebook API时收到错误消息。
当我启用了客户端OAuth登录时,启用了Web OAuth登录并将有效的Oauth重定向URI设置为http://localhost:8000/,当我尝试使用正确的应用ID登录Facebook时出现错误:
网址已阻止:此重定向失败,因为重定向URI未在应用的客户端OAuth设置中列入白名单。确保启用了客户端和Web OAuth登录,并将所有应用程序域添加为有效的OAuth重定向URI。
我是否需要在代码中添加特定设置或事物才能使其正常工作?
这是我得到的代码:
$(window).load(function() {
if (window.cordova.platformId == "browser") {
facebookConnectPlugin.browserInit(MYAPPIDHERE);
}
});
而且:
facebookConnectPlugin.login(["user_likes"],
function(response) {
likes();
},
function(response) {
likes();
});
}
编辑:
添加了Facebook App中的内容以及我导航的网址的图片。
答案 0 :(得分:1)
您可能希望检查facebookConnectPlugin
发出的HTTP调用,并查看查询字符串中的redirect_uri
是否与您在Facebook App设置中的https://www.facebook.com/dialog/oauth?client_id={FB_APP_ID}&redirect_uri=http://localhost:8000/
匹配为有效的重定向URI。
它可能看起来像这样:
redirect_url
修改强>
facebookConnectPlugin使用的http://static.ak.fbcdn.net/connect/xd_proxy.php#cb=f11b73fd18e512c#
= phonegap/plugin/facebookConnectPlugin/fbsdk.js
似乎存在问题。我检查了javascript code,它正在使用redirect_url
,这似乎是罪魁祸首。
当我使用FB SDK的直接加载时,它使用不同的http://staticxx.facebook.com/connect/xd_arbiter/r/RYqXvcNXPI-.js?version=42
= <script>
(function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/en_US/sdk.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
</script>
。用这个替换以前的redirect_url解决了我的问题。 phonegap的fbsdk.js可能使用过时的脚本。
底线:最好直接加载FB SDK,如上所述here。根据{{3}},它看起来像这样:
//connect.facebook.net/en_US/sdk.js
最后,要启用调试日志,请将//connect.facebook.net/en_US/sdk/debug.js
替换为console.log
。
答案 1 :(得分:0)
Javascript API无法在PhoneGap上进行登录。 请改用此cordova插件。
答案 2 :(得分:0)
Facebook无法重定向到本地网址。 happen将用户重定向到Facebook,他们登录,Facebook会对此进行验证并将其发回给您。 Facebook将它们发送到您提供的URL。网址http://localhost:8000
是以下的简写:连接到自己的计算机上的端口8000。在Facebook进行重定向的时候,localhost
引用了Facebook,而不是你了。显然,Facebook已将这些内容列入黑名单 - 可能出于安全原因。
您需要的是Facebook可以重定向到的公共网址。也许this有帮助?
答案 3 :(得分:0)
试试这些:
报告任何错误,我感觉第一种方式会起作用。