我正在尝试将基于网络的应用程序与facebook集成。
首先,我创建了页面login/facebook
,将用户重定向到网址:https://www.facebook.com/dialog/oauth?client_id=MY_ID&redirect_uri=https://www.domain.com/connect/facebook&scope=email,user_about_me,user_location
到目前为止一切顺利。在这个阶段没有问题。
如果用户授权我的申请,他会被重定向到www.domain.com/connect/facebook页面。在此页面上,我使用FB返回的数据在我的数据库中创建用户,或者只授权用户和创建会话。在这一步我有问题。当我使用来自Facebook Developers帮助页面的示例中的代码时,一切正常:
$token_url = "https://graph.facebook.com/oauth/access_token?client_id="
. $this->app_id . "&redirect_uri=" . urlencode($my_url) . "&client_secret="
. $this->secret . "&code=" . $code;
$access_token = file_get_contents($token_url);
$graph_url = "https://graph.facebook.com/me?" . $access_token;
$user_object = json_decode(file_get_contents($graph_url));
当我使用以下代码段时,一切都很完美。但是我更喜欢使用PHP-SDK并遇到问题。当我使用以下代码段时:
$session = $this->facebook->getSession();
var_dump($session);
if( $session )
{
try
{
$uid = $this->facebook->getUser();
$me = $this->facebook->api('/me');
var_dump('me');
}
catch (FacebookApiException $e)
{
error_log($e);
}
}
会话为空。有人有什么建议吗?
修改
在使用PHP-SDK获得一些乐趣后,我发现了一些有趣的东西:
当我使用SDK getLoginUrl()方法生成重定向URL时,它似乎部分工作。
$login_url = $this->facebook->getLoginUrl(
array(
'api_key' => $this->api_key,
'req_perms' => 'email,user_work_history,user_about_me,user_location',
'next' => 'https://www.domain.com/connect/facebook'
)
);
现在,当用户授权我的应用时,他被重定向到带有一些参数的正确页面,URL看起来像:
https://www.domain.com/connect/facebook?session={"session_key"%3A"11111111111-111111111"%2C"uid"%3A"11111111"%2C"expires"%3A0%2C"secret"%3A"111111111"%2C"base_domain"%3A"domain.com"%2C"access_token"%3A"1111111|222222.0-33333|sdvsdvsdvsdvsdv"%2C"sig"%3A"gsdbsdbsdbsdbsdbsdbsdb"}
任何人都知道为什么它不是哈希或不应该?
干杯, 马立克
答案 0 :(得分:1)
你可能想补充一下:
'canvas' => 0,
'fbconnect' => 1