页面选项卡中的oauth facebook

时间:2012-04-16 11:40:55

标签: php facebook oauth

我已经关注了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>

3 个答案:

答案 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页面应用程序选项卡