Согласно руководству по внедрению и здравому смыслу, я хотел бы проверить токен JWT, выданный пользователю, который вошел на мой сайт с помощью Google Identity Toolkit, чтобы предотвратить подделку и... на всякий случай.
Достаточно POST-запроса через cURL (код ниже) на https://www.googleapis.com/identitytoolkit/v3/relyingparty/getAccountInfo, содержащего idToken (строка), localId (список) и адрес электронной почты (список). Мое приложение использует в качестве локального идентификатора tokenId, выданный IDSP.
Однако вот что я получаю:
Error: call to URL https://www.googleapis.com/identitytoolkit/v3/relyingparty/getAccountInfo?key=MyAPIKey failed with status 500, response { "error": { "code": 500, "message": null } } , curl_error , curl_errno 0
И, честно говоря, я в полной растерянности: мой Google-fu обнаружился только при выходе из системы и обратно, но неудивительно, что это не решило проблему.
Еще одна проблема заключается в необходимости получения отображаемого имени пользователя и образ, через ту же проверяющую сторону.
Код
function verifytoken($data){
$url = "https://www.googleapis.com/identitytoolkit/v3/relyingparty/getAccountInfo?key=MyAPIKey";
var_dump($data);
$content = json_encode($data);
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HTTPHEADER,
array("Content-type: application/json"));
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $content);
$json_response = curl_exec($curl);
$status = curl_getinfo($curl, CURLINFO_HTTP_CODE);
if ( $status != 201 ) {
die("Error: call to URL $url failed with status $status, response $json_response, curl_error " . curl_error($curl) . ", curl_errno " . curl_errno($curl));
}
curl_close($curl);
$response = json_decode($json_response, true);
var_dump($response);
}
$tok=array('idToken'=>$gitkitUser->getUserId(),'localId'=>array($gitkitUser->getUserId()),'email'=>array($gitkitUser->getEmail()));
verifytoken($tok);