【问题标题】:Facebook Graph API - Page Tab Extra PermissionsFacebook Graph API - 页面选项卡额外权限
【发布时间】:2011-11-08 20:28:56
【问题描述】:

我正在尝试为我的一个页面创建一个欢迎选项卡,但我希望能够访问用户喜欢的内容(权限 user_likes)。

我只能找到有关如何为 Facebook 应用程序 或集成 Facebook 的网站执行此操作的文档,我找不到有关如何为 facebook 内的应用程序(选项卡)执行此操作的文档 页面(作为欢迎标签)。

是否有可能作为 页面标签 向用户请求额外的权限,但允许在没有它的情况下访问页面,或者是这种情况还是我必须制作一个应用程序和一个页面标签?我可以有一个按钮,当他们点击它时,它会授予页面额外的权限?

我目前正在尝试两种单独的实现,PHP 和 Javascript,我都无法开始工作。

谢谢,


只是使用

$loginUrl = $fb->getLoginUrl(
     array('canvas' => 1, 'scope' => 'user_likes,user_about_me,user_birthday')
);

echo "<a href='$loginUrl'>Login</a>";

生成一个链接,该链接仅将用户(在 iframe 页面内)重定向到带有 Facebook 徽标的屏幕。我想要一个权限对话框!


使用 javascript 代码

<script>
  FB.init({
    appId  : 'APPID',
    status : true, // check login status
    cookie : true, // enable cookies to allow the server to access the session
    xfbml  : true, // parse XFBML
    oauth  : true // enable OAuth 2.0
  });

 FB.login(function(response) {
   if (response.authResponse) {
     console.log('Welcome!  Fetching your information.... ');
     FB.api('/me', function(response) {
       console.log('Good to see you, ' + response.name + '.');
       FB.logout(function(response) {
         console.log('Logged out.');
       });
     });
   } else {
     console.log('User cancelled login or did not fully authorize.');
   }
 }, {scope: 'email'});
</script>

结果

Unsafe JavaScript attempt to access frame with URL https://www.facebook.com/dialog/oauth?api_key=158609350887973&app_id=158609350887973&client_id=158609350887973&display=popup&locale=en_US&method=permissions.oauth&origin=1&redirect_uri=http%3A%2F%2Fstatic.ak.fbcdn.net%2Fconnect%2Fxd_proxy.php%3Fversion%3D3%23cb%3Df2f7aed38%26origin%3Dhttp%253A%252F%url.com%252Ff3634c5da%26relation%3Dopener%26transport%3Dpostmessage%26frame%3Df9748b77&response_type=token%2Csigned_request&scope=email&sdk=joey from frame with URL http://url.com/gs/index.php. Domains, protocols and ports must match.

javascript还会打开以下错误弹出框


我的应用配置设置

【问题讨论】:

  • 有人可以解释为什么要提出关闭和否决票吗?我在问之前研究了这个问题,并没有发现在页面的欢迎选项卡中请求权限只是如何将它们作为应用程序的一部分请求。
  • ...“域、协议和端口必须匹配”可能与您的问题有关。我会先解决这个问题(可能是你问题的根源)
  • 我只能推测这是因为它是 Facebook 中的 iFrame,并且它自己的 API 正在尝试访问父框架? (实际 Facebook)。
  • $loginUrl 的值是多少?
  • 我会首先仔细检查画布 URL 的应用设置是否指向与 iframe 内容相同的域/端口。

标签: php facebook facebook-graph-api


【解决方案1】:

【讨论】:

  • 没有回答我的问题,我已经对其进行了修改以使其更清晰。
【解决方案2】:

您在弹出窗口中看到错误,因为您的授权 URL 中的 redirect_uri 与应用配置中您的站点 URL 中列出的内容不匹配。要解决这个问题,您需要在应用配置中启用“网站”选项。通过单击“网站”旁边的复选框启用它,然后在“站点 URL”文本框中输入 http://Site.com(或任何您的真实站点 URL)。此 URL 必须与您在 redirect_uri 中提供的主机 URL 匹配。这样做应该可以解决弹出窗口错误。

关于“不安全的 JavaScript 尝试访问框架”错误,您使用的是 webkit 浏览器吗? Webkit 会抛出这些错误,但大多数情况下可以忽略。有关更多信息,请参阅此内容:"Unsafe JavaScript attempt to access frame with URL..." error being continuously generated in Chrome webkit inspector

【讨论】:

    【解决方案3】:

    调用 FB.api 时,在响应对象中使用用户 ID 而不是“我” 这两种方法都表明您在应用设置中的网站域设置不正确。

    我们在很多标签应用程序上都执行此操作,因此这绝对是可能的。

    【讨论】:

      【解决方案4】:

      看起来您对 app_id 和 api_key 使用了相同的值。这些应该是不同的。

      【讨论】:

      • app_id 和 api_key 是同义词 - API 中曾经需要 'api_key' 的任何地方都可以使用 App ID instad
      【解决方案5】:

      尝试重定向用户而不是显示链接($loginUrl),例如使用 php 标头函数或 js location.href。

      【讨论】:

        猜你喜欢
        • 2015-08-11
        • 1970-01-01
        • 2017-03-04
        • 1970-01-01
        • 1970-01-01
        • 2011-03-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多