我遇到了一个奇怪的问题,在今天停止工作之前有效的事情,可能之前很糟糕但现在在oAUTH 2改变之后,我遇到了近乎生产的应用程序的麻烦
这是我尝试的
$params = array('method'=>'fql.query','query' => 'SELECT uid2 FROM friend WHERE uid1 = me()');
$result = $facebook->api($params);
我明白了:
Exception: 104: Requires valid signature
或更详细说明:
$config = array(
'appId' => 'XXXXXXXXXXXXXXXX',
'secret' => 'XXXXXXXXXXXXXXXXXXXXXXXXXXXX',
);
$facebook = new Facebook($config);
$uid = $facebook->getUser();
if ($uid){
try {
$access_t = $facebook->getAccessToken();
$fql = 'SELECT uid2 FROM friend WHERE uid1 = '.$uid;
$params = array('method' => 'fql.query', 'query' => 'SELECT uid2 FROM friend WHERE uid1 = '.$uid);
$result = $facebook->api($params);
echo $result;
$friends = $facebook->api(array('method' => 'fql.query', 'query' => $fql, 'access_token' => $access_t));
var_dump($friends);
} catch (FacebookApiException $e) {
echo $e;
}
这是我用来验证用户并获取登录信息和权限的代码:
$canvas_base_url = "https://apps.facebook.com/myapp/index.php?from=allow";
$params = array('scope' => 'publish_stream,email,offline_access,user_status,friends_status,friends_photos,user_photos,xmpp_login,user_online_presence,friends_online_presence',
'redirect_uri' => $canvas_base_url
);
$loginUrl = $facebook->getLoginUrl($params);
我做错了什么?
答案 0 :(得分:0)
这意味着您使用的访问令牌无效。它可能已经过期了。
以下是http://developers.facebook.com/docs/authentication/文档中的引用:
除了访问令牌(access_token参数)之外,还有 response包含令牌到期前的秒数( expires参数)。令牌过期后,您需要重新运行 上面的步骤生成一个新的代码和access_token,虽然如果 用户已经授权您的应用,他们将不会被提示 再这样做。如果您的应用需要具有无限期限的访问令牌 时间(也许是代表用户代表他们采取行动 使用您的应用),您可以请求offline_access权限。
因此,您应该重新运行生成访问令牌的步骤,或者需要offline_access权限。