facebook oauth无法注销不接受权限的用户

时间:2013-02-07 20:48:54

标签: php javascript facebook oauth facebook-oauth

我的facebook应用程序在我餐厅的售货亭中运行,它允许用户办理登机手续。这很好用,如果他们登录并接受所需的权限,那么它们会在完成后退出,没有任何问题。

但是,如果他们不接受权限,则无法记录它们的方法。我已经尝试了我能想到的一切以及我在stackoverflow上找到的每个帖子。

如果auth没有得到用户的许可,我该如何记录客户?

我已经使用错误报告向facebook报告过,他们已经表示他们正在研究它。只希望这里的一位天才有一个想法。

1 个答案:

答案 0 :(得分:1)

您应该使用图表api中的权限连接来确定用户是否已经提供了所需的特定权限。如果它们没有,您可以使用相同的条件来呈现登录按钮或流量,但不添加范围。

示例来:包括,当前的php sdk,以及带登录按钮html5的当前js sdk。

*在示例中我使用manage_pages作为所需的权限。*

PHP SDK 3.2.2 init。

 require '../../src/facebook.php';
 $facebook = new Facebook(array(
   'appId'  => '1111111111111111',
   'secret' => 'xxxxxxxxxxxxxxxx',
   'cookie' => true, // enable optional cookie support
   ));
try { $user = $facebook->getUser(); } catch (FacebookApiException $e) {  };

PHP代码:

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

PHP条件和HTML5登录按钮

        <div id="fb-root"></div>
        <script>// current js sdk</script>
<?php if($user && !$user_accounts[permissions][data][0][manage_pages]): ?>
// we know we have a user but no perms so lets render button with out scope.
    <div class="fb-login-button" data-autologoutlink="true" data-show-faces="false" data-width="200" data-max-rows="1" data-size="large"></div>
<?php elseif($user && $user_accounts[permissions][data][0][manage_pages]): ?>
// we know we have a user and they have given perms so render button with scope.
    <div class="fb-login-button" data-autologoutlink="true" data-show-faces="false" data-width="200" data-max-rows="1" data-size="large" data-scope="manage_pages"></div>
<?php elseif(!$user): ?>
// we have no user, flow as new user... or provide 2 buttons lol.
    <div class="fb-login-button" data-autologoutlink="true" data-show-faces="false" data-width="200" data-max-rows="1" data-size="large" data-scope="manage_pages"></div>
<?php endif; ?>