我的facebook应用程序在我餐厅的售货亭中运行,它允许用户办理登机手续。这很好用,如果他们登录并接受所需的权限,那么它们会在完成后退出,没有任何问题。
但是,如果他们不接受权限,则无法记录它们的方法。我已经尝试了我能想到的一切以及我在stackoverflow上找到的每个帖子。
如果auth没有得到用户的许可,我该如何记录客户?
我已经使用错误报告向facebook报告过,他们已经表示他们正在研究它。只希望这里的一位天才有一个想法。
答案 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; ?>