如何在javascript中自定义facebook oauth对话框?

时间:2011-11-18 22:40:38

标签: javascript facebook facebook-graph-api oauth

我想更改页面网址的位置,我更希望在单独的窗口中打开权限请求对话框。

这是使用的JavaScript:

  <script>
        window.fbAsyncInit = function() {
  FB.init({
    appId      : 'XXXXXXXXXXXXXXX',
    status     : true, 
    cookie     : true,
    xfbml      : true
  });
};
    (function(d){
   var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;}
   js = d.createElement('script'); js.id = id; js.async = true;
   js.src = "//connect.facebook.net/en_US/all.js";
   d.getElementsByTagName('head')[0].appendChild(js);
 }(document));
  </script>

在单独的窗口中显示的对话框并未显示在所有浏览器中,这使得IE ...

PHP:

 // Create our Application instance (replace this with your appId and secret).
    $facebook = new Facebook(array(
      'appId'  => 'XXXXXXXXXXXXXXXXXXXXXXXXX',
      'secret' => 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
    ));

    // Get User ID
    $user = $facebook->getUser();

    if ($user) { 
      try {
        // Proceed knowing you have a logged in user who's authenticated.
        $user_profile = $facebook->api('/me');
      } catch (FacebookApiException $e) {
        error_log($e);
        $user = null;
      }
    }

    //  n or logout url will be needed depending on current user state.
    if ($user) {
      $logoutUrl = $facebook->getLogoutUrl();
    } else {
      $loginUrl = $facebook->getLoginUrl(   array(
           'scope' => 'publish_stream,user_birthday,email,offline_access',
           'next'  => 'LINK HERE',
          ));
    }

1 个答案:

答案 0 :(得分:3)

不要试图破坏Facebook的JavaScript SDK,只需使用标准的OAuth身份验证,它允许您在没有JavaScript弹出窗口的情况下将用户重定向到身份验证或权限对话框。

请参阅Authentication documentation中的{em>服务器端流部分和OAuth dialog's documentation中的直接网址示例。请注意,后一文档中的example URL与您的第二个屏幕截图非常相似。