我有一个Facebook应用程序,该应用程序在我的餐厅的信息亭中运行,它允许用户 checkin 。这样做很好,如果他们登录并接受所需的权限,则可以让他们在完成操作后退出,而不会出现丝毫问题。
但是,如果他们不接受该权限,则注销它们的方法将无效。我已经尝试了所有我能想到的东西,以及在stackoverflow上可以找到的每个帖子。
如果auth没有用户许可,如何注销客户?
我已经使用错误报告将此报告给了Facebook,他们表示正在调查中。只是希望这里的一位天才有一个主意。
最佳答案
您应该使用图表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; ?>
关于php - facebook oauth无法注销不接受权限的用户,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14760718/