我正在尝试使用parse.com REST Api在Symfony2项目下实现Facebook登录。
以下是我用于进行CURL调用的代码:
$headers = array(
"Content-Type: application/json",
"Content-Length: " . strlen($facebookJson),
"X-Parse-Application-Id: " . $applicationId,
"X-Parse-REST-API-Key: " . $parseRestAPIKey
);
$handle = curl_init();
curl_setopt($handle, CURLOPT_URL, $url);
curl_setopt($handle, CURLOPT_HTTPHEADER, $headers);
curl_setopt($handle, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
curl_setopt($handle, CURLOPT_POSTFIELDS, $facebookJson);
$data = curl_exec($handle);
curl_close($handle);
$facebookJson
变量代表Facebook authData:
{
"facebook": {
"id": "user's Facebook id number as a string",
"access_token": "an authorized Facebook access token for the user",
"expiration_date": "token expiration date of the format: yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"
}
}
在此示例中,用户不是解析中的注册用户,因此应创建新用户(如the documentation中所述),但不是创建新用户,而是提供以下错误消息:
“{”code“:201,”error“:”缺少用户密码“}
由于我使用Facebook注册用户,我认为不应该要求输入密码,the documentation没有提及此。
有任何建议如何解决这个问题?
我是否应该尝试不同的方法来实现带解析的Facebook登录? (例如,解析javascript sdk可能会更容易。)
答案 0 :(得分:2)
您错过了 authData 字段。以下是Parse文档中JSON的示例:
{
"authData": {
"twitter": {
"id": "12345678",
"screen_name": "ParseIt",
"consumer_key": "SaMpLeId3X7eLjjLgWEw",
"consumer_secret": "SaMpLew55QbMR0vTdtOACfPXa5UdO2THX1JrxZ9s3c",
"auth_token": "12345678-SaMpLeTuo3m2avZxh5cjJmIrAfx4ZYyamdofM7IjU",
"auth_token_secret": "SaMpLeEb13SpRzQ4DAIzutEkCE2LBIm2ZQDsP3WUU"
}
}
}