在FB.com上移除应用后,FB应用无法从iOS请求权限

时间:2011-12-12 21:26:06

标签: ios facebook permissions privacy

我们发现一组奇怪的情况,当我们从iOS应用程序共享到Facebook时会导致错误。我试图弄清楚它是否只是Facebook对这一系列事件做出反应的方式中的一个错误,或者可能有一种方法可以避免它。

基本上,我们的iOS应用在用户撤消FB网站的权限后不会重新请求权限。我们期望我们的应用程序会重新询问,但它会尝试共享内容,然后失败并显示一般错误消息。用户没有机会再次授予权限。

具体情况:

  1. 用户想要分享iOS应用中的内容,连接到它的FB应用请求权限,一切正常。
  2. 用户通过FB.com应用设置从其个人资料中删除应用。
  3. 用户再次从iOS应用程序共享内容,FB应用程序提交,但随后返回错误而不是重新请求权限。
  4. 杰里米

2 个答案:

答案 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, '-_', '+/'));
}

?>