我们发现一组奇怪的情况,当我们从iOS应用程序共享到Facebook时会导致错误。我试图弄清楚它是否只是Facebook对这一系列事件做出反应的方式中的一个错误,或者可能有一种方法可以避免它。
基本上,我们的iOS应用在用户撤消FB网站的权限后不会重新请求权限。我们期望我们的应用程序会重新询问,但它会尝试共享内容,然后失败并显示一般错误消息。用户没有机会再次授予权限。
具体情况:
杰里米
答案 0 :(得分:2)
测试人员发现他们没有给应用程序足够的时间来清除设备上的缓存,因此设备权限与Facebook权限不匹配。
以前,他们会删除FB.com的权限,然后立即尝试从iOS应用分享。现在,他们报告说,如果他们等待一个小时,应用程序将正常重新请求权限。
谢谢!
答案 1 :(得分:0)
我不知道是什么原因引起了您的问题,但我可能会为您解决一下:在高级应用设置中设置取消授权的回拨网址。这样,您就可以捕获每个取消对您的应用授权的用户,并将其保存到您的数据库或其他任何用户。该URL可能链接到一个php文件,如下所示:
<?php
$secretKey = "APP_SECRET_KEY";
$data = parse_signed_request($_REQUEST['signed_request'], $secretKey);
$fbUserId = $data['user_id'];
// do with the user id whatever you want
function parse_signed_request($signed_request, $secret) {
list($encoded_sig, $payload) = explode('.', $signed_request, 2);
// decode the data
$sig = base64_url_decode($encoded_sig);
$data = json_decode(base64_url_decode($payload), true);
if (strtoupper($data['algorithm']) !== 'HMAC-SHA256') {
error_log('Unknown algorithm. Expected HMAC-SHA256');
return null;
}
// check sig
$expected_sig = hash_hmac('sha256', $payload, $secret, $raw = true);
if ($sig !== $expected_sig) {
error_log('Bad Signed JSON signature!');
return null;
}
return $data;
}
function base64_url_decode($input) {
return base64_decode(strtr($input, '-_', '+/'));
}
?>