【问题标题】:How can I customize facebook oauth dialog in javascript?如何在 javascript 中自定义 facebook oauth 对话框?
【发布时间】:2012-01-01 16:01:33
【问题描述】:

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

这是我正在使用的 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',
          ));
    }

【问题讨论】:

  • 你能分享整个代码吗?上面的 sn-p 不会提示用户安装你的应用!
  • 您还在寻找什么?
  • 是什么触发了身份验证对话框打开?如果您查看example.php 和文档,您会发现可以构造登录 url 并将用户重定向到它。
  • 您不能使用 XFBML 按钮并且没有对话框。你也应该使用redirect_uri 而不是next

标签: javascript facebook facebook-graph-api oauth


【解决方案1】:

不要试图颠覆 Facebook 的 JavaScript SDK,只需使用标准 OAuth 身份验证,它允许您将用户重定向到身份验证或权限对话框,而无需弹出 JavaScript 弹出窗口。

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

【讨论】:

  • 是的!但是我怎样才能仍然使用 Fbml facebook 按钮?
  • XFBML 登录按钮是 JavaScript SDK 的一部分。同样,创建自己的登录按钮会更容易,这符合 Facebook 在facebook.com/brandpermissions/logos.php 和其他地方的政策。
猜你喜欢
  • 1970-01-01
  • 2013-01-20
  • 2014-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多