【问题标题】:How to use Facebook OAuth 2.0 authentication like Zynga and other use it?如何使用 Facebook OAuth 2.0 认证像 Zynga 和其他使用它?
【发布时间】:2010-10-27 06:47:40
【问题描述】:

我想在用户输入http://apps.facebook.com/myfancyapp 时直接显示“请求权限”框。 Facebook Authentication 文档非常清楚 URL 的外观

https://graph.facebook.com/oauth/authorize?client_id=[APPID]&redirect_uri=http://www.myfancyapp.com/&scope=user_photos,user_videos,publish_stream

将此 URL 直接粘贴到浏览器中可以正常工作。我想要的是通过 JavaScript(或其他)从应用程序 URL 重定向用户

http://apps.facebook.com/myfancyapp

到上面的验证框 URL。

我认为这样的事情会起作用:

   <script type="text/javascript">
   <!--
      window.location = "https://graph.facebook.com/oauth/authorize?client_id=[APPID]&redirect_uri=http://www.myfancyapp.com/&scope=user_photos,user_videos,publish_stream"
   //-->
   </script>

这会将我重定向到一个正文看起来像这样的页面

单击图像/测试然后重定向到身份验证框。

如何直接重定向到“请求许可”框。我知道它以某种方式工作,因为其他开发人员(例如 Zynga)已经这样做了。

【问题讨论】:

  • 那会是一个画布应用还是一个实现 facebook connect 的独立网站?什么脚本语言? PHP/Javascript?
  • 这是一个画布应用程序,我使用的是 PHP 和 JavaScript。当我使用 Facebook 外部的重定向时,它可以工作。我猜 window.location 是问题所在?

标签: redirect oauth facebook


【解决方案1】:

我和提问者做同样的事情,只是用 top.location.href = "https://graph....." 代替 window.location

喜欢:

<script type="text/javascript">
top.location.href = "https://graph.facebook.com/oauth/authorize?client_id=[APPID]&scope=email&redirect_uri=http://apps.facebook.com/myfancyapp/";
</script>

如果需要,提示登录,然后是权限。然后重定向到应用程序。

【讨论】:

  • 当我尝试这个时出现这个错误: { "error": { "message": "Invalid redirect_uri: Given URL is not allowed by the Application configuration.", "type": "OAuthException" } }
  • @ria 如果您在本地运行应用程序时发生这种情况,这仅意味着您需要在 facebook 上创建一个指向您的本地主机的新应用程序。
【解决方案2】:

用 PHP 做这件事很简单。

在后台

$facebook = new Facebook( array(
    'appId'  => '<FB_APP_ID>'
  , 'secret' => '<FB_APP_SECRET>'
  , 'cookie' => true
));

$fbSession = $facebook->getSession();
if ( !$fbSession )
{
  $url = $facebook->getLoginUrl( array(
      'canvas'     => 1
    , 'fbconnect'  => 0
    , 'display'    => 'page'
    , 'cancel_url' => null
    , 'req_perms'  => 'user_photos,user_videos,publish_stream'
  ) );
}

然后,在前端

<script type="text/javascript">
  top.location.href = '<?php echo $url; ?>';
</script>
<p>
Not being redirected? <a href="<?php echo $url; ?>" target="_top">Click Here.</a>
</p>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-03
    • 1970-01-01
    • 1970-01-01
    • 2018-07-23
    • 1970-01-01
    • 2011-08-23
    • 2020-02-21
    • 1970-01-01
    相关资源
    最近更新 更多