【问题标题】:oauth facebook within page tab页面选项卡内的 oauth facebook
【发布时间】:2012-05-23 23:40:01
【问题描述】:

我已按照 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>

【问题讨论】:

    标签: php facebook oauth


    【解决方案1】:

    我也有同样的问题。

    你应该能够做到这一点。

    用户单击对话框中的按钮后要重定向到的 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>
    

    【讨论】:

    • 这行得通,但这是一种愚蠢的做事方式……我刚刚看到了你的用户名。这是唯一对我有用的东西。
    【解决方案2】:

    如果您希望用户在授权后留在您的 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。

    【讨论】:

    • 嗨@jason-decamp,我一直在尝试按照标准代码示例使用FB Javascript SDK。您的 FB.login 代码通常会创建一个弹出式 oauth 对话框,除非它被按钮触发,否则大多数浏览器都会阻止该对话框。我希望能够在未登录的用户上自动调用 FB.login 并在 iframe 中打开对话框。你是做什么的?
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2012-04-28
      • 1970-01-01
      • 2012-05-30
      • 1970-01-01
      • 1970-01-01
      • 2012-07-11
      • 1970-01-01
      • 1970-01-01
      • 2012-02-29
      相关资源
      最近更新 更多