链接Facebook用户时,使用解析REST Api丢失用户密码

时间:2014-12-23 18:34:15

标签: facebook rest symfony curl parse-platform

我正在尝试使用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可能会更容易。)

1 个答案:

答案 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"
        }
    }
}