如何使用Facebook OAuth 2.0身份验证,如Zynga和其他使用它?

时间:2010-10-15 12:37:14

标签: redirect oauth facebook

我想在用户输入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

到上面的身份验证框网址。

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

   <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>

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

Facebook

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

如何直接重定向到“请求权限”框。我知道它的工作原理与其他开发人员(例如Zynga)已经做到了。

2 个答案:

答案 0 :(得分:3)

我正在做与提问者相同的事情,而不是window.location,请使用top.location.href =“https:// graph .....”

像:

<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>

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

答案 1 :(得分:1)

使用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>