ここ数日、自分のアプリを uber に統合しようとしてきましたが、何らかの理由で oauth2 認証中に uber から有効なトークンを取得できません。アクセス コードは取得できますが、curl を使用すると、スクリプトをどのように配置してもアクセス トークンを取得できないようです。ここに私が持っているものがあります:
<?php
echo $_GET['code']."<br>";
$token = curl_init();
$param = array(
'client_secret' => 'MY_SECRET',
'client_id' => 'MY_ID',
'grant_type' => 'authorization_code',
'code' => "{$_GET['code']}"
);
$postData = '';
foreach($param as $k => $v)
{
$postData .= $k . '='.urlencode($v).'&';
}
$postData = rtrim($postData, '&');
curl_setopt($token, CURLOPT_URL, 'https://login.uber.com/oauth/token');
curl_setopt($token, CURLOPT_HEADER, true);
curl_setopt($token, CURLOPT_RETURNTRANSFER, true);
curl_setopt($token, CURLOPT_POST, true);
curl_setopt($token, CURLOPT_POSTFIELDS, $postData);
$returned_token = curl_exec($token);
curl_close($token);
echo $returned_token;
?>
シークレットと ID を再確認しましたが、どちらも正しいです。アクセスコードを取得するたびに、それが一意のものであることがわかります。リダイレクト先の認証ページにエコーアウトされていることがわかりますが、何に関係なく、次のような応答が返されます。
{"error": "access_denied"}