5

我有一个在我餐厅的信息亭中运行的 facebook 应用程序,它允许用户登记入住。这很好用,如果他们登录并接受所需的权限,那么它就可以让他们在完成后注销而不会出现任何问题。

但是,如果他们不接受这些权限,则无法将其注销。我已经尝试了我能想到的所有内容以及我在 stackoverflow 上可以找到的所有帖子。

如果 auth 没有用户的许可,我该如何注销客户?

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

4

1 回答 1

2

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

示例:包括当前 php sdk 和当前带有登录按钮 html5 的 js sdk。

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

PHP SDK 3.2.2 初始化。

 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; ?>
于 2013-02-11T02:23:26.083 回答