无法从Facebook Oauth访问电子邮件

时间:2010-09-01 23:38:23

标签: facebook oauth

我无法从Facebook API获取适当的令牌来获取扩展的用户信息(特别是电子邮件)。我已正确授予我的应用程序权限以检索电子邮件,因此我知道我拥有正确的权限。我正在尝试使用exchange_session方法将会话转换为令牌,如下面的代码所示:

        $url = 'https://graph.facebook.com/oauth/exchange_sessions';

        $curl_handle=curl_init();
        curl_setopt($curl_handle,CURLOPT_URL,$url);
        curl_setopt($curl_handle, CURLOPT_POSTFIELDS,'type=client_cred&client_id=' . FB_APPID . '&client_secret=' . FB_SECRET . '&sessions=' . $session->session_key);
        curl_setopt($curl_handle,CURLOPT_CONNECTTIMEOUT,2);
        curl_setopt($curl_handle,CURLOPT_RETURNTRANSFER,1);
        $buffer = curl_exec($curl_handle);
        curl_close($curl_handle);

        $tokendata = json_decode($buffer);
        $user = json_decode(file_get_contents('https://graph.facebook.com/me/?wrap_access_token=' . $tokendata[0]->access_token));
print_r($user);    

如果我使用'/ me',它总是会出错 “必须使用活动访问令牌来查询有关当前用户的信息。”

如果我用当前用户ID换出'/ me',它会给我基本的用户信息,但不会提供扩展信息。

我得到的令牌确实是具有以下格式的会话信息的完整令牌:

123456789012345 |。6.abcdefghijklmnopqrstuv __ 1234.1234567890-1234567890 |。abcdefghijklmnopqrstuvwxyza

帮助?

谢谢! 安迪

2 个答案:

答案 0 :(得分:0)

使用official facebook's php sdk来避免代币处理时的头痛

答案 1 :(得分:0)

应该是/me/?access_token=而不是/me/?wrap_access_token=吗?