我已经关注了facebook开发人员教程,但这样做无济于事。
基本上我需要用户在页面标签中授权我的应用程序。
我已经使用他们推荐的javascript在页面加载时重定向用户将它们重定向到oauth弹出窗口但是当应用程序加载时我只是得到了可怕的“抱歉发生了错误”
生成的网址是“https://www.facebook.com/dialog/oauth/?client_id=247274355370447&redirect_uri=https%3A%2F%2Fwww.facebook.com%2Fpages%2Fnull%2F286793781401206%2F247274355370447& ; scope = email,user_about_me“所以我可以看到我传入了page_id和app_id的变量。
这是我完整的JS代码
<script>
var oauth_url = 'https://www.facebook.com/dialog/oauth/';
oauth_url += '?client_id=<? echo $app_id;?>';
oauth_url += '&redirect_uri=' + encodeURIComponent('https://www.facebook.com/pages/null/<?php echo $page_id;?>/<?php echo $app_id;?>');
oauth_url += '&scope=email,user_about_me'
window.top.location = oauth_url;
</script>
答案 0 :(得分:2)
我遇到了同样的问题。
你应该能够做到这一点。
用户单击对话框中的按钮后重定向到的URL。您指定的URL必须是与应用程序设置中指定的基本域相同的URL,形式为hxxps://apps.facebook.com/YOUR_APP_NAMESPACE的Canvas URL或格式为hxxps://的页面选项卡URL www.facebook.com/PAGE_USERNAME/app_YOUR_APP_ID
这对我不起作用。我仍然得到错误说redirect_uri不归用户所有。
我宁愿不必在我的网站上添加一个页面来将它们重定向回网站,但它似乎正确的方法不起作用。
目前我发现的最简单的修复方法是将redirect_uri设置回我的域名页面。从中加载与page_tab内容相同的域。
e.g。我的页面标签加载了hxxp://example.com/,因此请将redirect_uri设置为hxxp://example.com/redirect.php
redirect.php中的使用以下代码
<script>
window.top.location = "{YOUR_FACEBOOK_PAGE_TAB_URL}";
</script>
答案 1 :(得分:1)
如果您希望用户在授权后保留在您的页面选项卡应用程序上,我建议使用FB.login()函数。您可以使用以下代码执行此操作:
FB.login(function(response) {
if (response.authResponse) {
// do something with newly authorized user
} else {
console.log('User cancelled login or did not fully authorize.');
}
}, {scope:'PERMISSION_1', 'PERMISSION_2'});
它将在iframe中打开对话框,并在提交或取消授权后触发回调。
此解决方案使用的是javascript SDK。
答案 2 :(得分:0)
我认为这可能是因为您尝试将它们重定向回facebook.com,因此它不会将此视为您应用的有效网址。您需要重定向到您自己网站上的页面,然后如果需要将它们从那里重定向回实际的Facebook页面应用程序选项卡