0

我已按照 facebook 开发人员教程进行操作,但无济于事。

基本上我需要用户从页面选项卡中授权我的应用程序。

我已经使用他们推荐的 javascript 在页面加载时重定向用户,以将他们重定向到 oauth 弹出窗口,但是当应用程序加载时,我只是得到可怕的“抱歉发生错误”

生成的 URL 是“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>
4

3 回答 3

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 内容的域相同。

例如,我的页面选项卡加载 hxxp://example.com/ 所以将 redirect_uri 设置为 hxxp://example.com/redirect.php

在redirect.php 中使用以下代码

 <script>
window.top.location = "{YOUR_FACEBOOK_PAGE_TAB_URL}";
</script>
于 2012-05-23T14:46:45.770 回答
1

如果您希望用户在授权后留在您的 Page Tab App 上,我建议使用 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。

于 2012-05-23T15:40:01.877 回答
0

我认为这可能是因为您试图将它们重定向回 facebook.com,因此它不会将其视为您的应用程序的有效 url。您需要重定向到您自己网站上的页面,然后如果需要将它们从那里重定向回实际的 facebook 页面应用程序选项卡

于 2012-04-16T12:16:38.337 回答