Php 页面选项卡内的oauth facebook

Php 页面选项卡内的oauth facebook,php,facebook,oauth,Php,Facebook,Oauth,为了做到这一点,我遵循了facebook开发者教程 基本上,我需要用户授权我的应用程序从一个页面标签 我已经使用他们推荐的javascript在页面加载时重定向用户,将他们重定向到oauth弹出窗口,但是当应用加载时,我只收到可怕的“抱歉,发生了错误” 生成的URL为“https://www.facebook.com/dialog/oauth/?client_id=247274355370447&redirect_uri=https%3A%2F%2Fwww.facebook.com%2Fpage

为了做到这一点,我遵循了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“这样我就可以看到页面id和应用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>

var oauth_url='1〕https://www.facebook.com/dialog/oauth/';
oauth_url+='?客户端_id=';
oauth_url+='&重定向_uri='+encodeURIComponent('https://www.facebook.com/pages/null//');
oauth_url+='&scope=电子邮件,用户关于我'
window.top.location=oauth\u url;

我认为这可能是因为您试图将它们重定向回facebook.com,所以它不认为这是应用程序的有效url。你需要重定向到你自己网站上的一个页面,然后如果需要,将它们从那里重定向回实际的facebook页面应用程序选项卡,我认为这可能是因为你试图将它们重定向回facebook.com,因此它不认为这是你的应用程序的有效url。你需要重定向到你自己网站上的一个页面,然后如果需要的话,将它们从那里重定向回实际的facebook页面应用程序选项卡,我也遇到了同样的问题

你应该能够做到这一点

用户单击对话框中的按钮后要重定向到的URL。您指定的URL必须是与应用程序设置中指定的基本域相同的URL,即表单的画布URLhxxps://apps.facebook.com/YOUR_APP_NAMESPACE 或表单的页面选项卡URLhxxps://www.facebook.com/PAGE_USERNAME/app_YOUR_APP_ID

这对我不管用。我仍然得到一个错误,说重定向uri不属于用户

我宁愿不必在我的网站上添加一个页面来将它们重定向回该网站,但这似乎是不正确的方法

目前我找到的最简单的修复方法是将重定向uri设置回我域中的某个页面。从中加载页面选项卡内容的域

e、 g.我的页面选项卡加载hxxp://example.com/ 因此,将重定向uri设置为hxxp://example.com/redirect.php

在redirect.php中,使用以下代码

 <script>
window.top.location = "{YOUR_FACEBOOK_PAGE_TAB_URL}";
</script>

window.top.location=“{YOUR\u FACEBOOK\u PAGE\u TAB\u URL}”;

我也有同样的问题

你应该能够做到这一点

用户单击对话框中的按钮后要重定向到的URL。您指定的URL必须是与应用程序设置中指定的基本域相同的URL,即表单的画布URLhxxps://apps.facebook.com/YOUR_APP_NAMESPACE 或表单的页面选项卡URLhxxps://www.facebook.com/PAGE_USERNAME/app_YOUR_APP_ID

这对我不管用。我仍然得到一个错误,说重定向uri不属于用户

我宁愿不必在我的网站上添加一个页面来将它们重定向回该网站,但这似乎是不正确的方法

目前我找到的最简单的修复方法是将重定向uri设置回我域中的某个页面。从中加载页面选项卡内容的域

e、 g.我的页面选项卡加载hxxp://example.com/ 因此,将重定向uri设置为hxxp://example.com/redirect.php

在redirect.php中,使用以下代码

 <script>
window.top.location = "{YOUR_FACEBOOK_PAGE_TAB_URL}";
</script>

window.top.location=“{YOUR\u FACEBOOK\u PAGE\u TAB\u URL}”;

如果您希望用户在授权后仍留在页面选项卡应用程序上,我建议使用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。

如果您希望用户在授权后仍留在页面选项卡应用程序上,我建议使用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。

Hi@jason decamp,我一直在尝试按照标准代码示例使用FB javascript SDK。您的FB.login代码通常会创建一个弹出的oauth对话框,大多数浏览器都会阻止该对话框,除非它是由按钮触发的。我希望能够在未登录的用户上自动调用FB.login,并在iframe中打开对话框。你是做什么的?嗨@jason decamp,我一直在尝试按照标准代码示例使用FB Javascript SDK。您的FB.login代码通常会创建一个弹出的oauth对话框,大多数浏览器都会阻止该对话框,除非它是由按钮触发的。我希望能够在未登录的用户上自动调用FB.login,并在iframe中打开对话框。你是做什么的?这很有效,但这是一种愚蠢的做事方式……我刚刚看到了你的用户名。这是唯一对我有用的东西。这很有用,但这是一种愚蠢的做事方式……我刚刚看到了你的用户名。这是唯一对我有用的东西。