私のPHPアプリケーションのユーザーを23とMe apiに接続しようとしていますが、提供されたトークンを使用しようとすると問題が発生します。ときに私の問題がある23とMe Guzzle 401付き無効なトークン
public function connectDNA()
{
$code = $_GET["code"];
$client = new Client();
$result = $client->post('https://api.23andme.com/token/', [
'form_params' => [
'client_id' => env('DNA_ID'),
'client_secret' => env('DNA_SECRET'),
'grant_type' => 'authorization_code',
'code' => $code,
'redirect_uri' => 'http://localhost:8000/receive_code/',
'scope' => 'basic names email'
]
]);
$contents = $result->getBody()->getContents();
$contents = json_decode($contents);
$user = Auth::user();
$user->dna_token = $contents->access_token;
$user->save();
return redirect('/home');
}
次のコントローラにリダイレクトされ、正常に私は、ユーザーテーブルに格納トークンを返し
<a href="https://api.23andme.com/authorize/?redirect_uri={{ env('APP_URL') }}/receive_code/&response_type=code&client_id={{ env('DNA_ID') }}&scope=basic names email">Connect with 23andMe</a>
:私は正常に次のHTTPアクションでトークンを取得することができますそのトークンを使って23と私のAPIにアクセスしてみてください。私はその呼び出しを構造化する方法がわからないので、疑問に思っています。次の複数のバリエーションを試しました。
$result = $client->get('https://api.23andme.com/3/account/', [
'Authorization' => $user->dna_token
]);
return $result;
更新:問題は私がグーグルをフォーマットしているようだ。私がカールしたとき:
curl "https://api.23andme.com/3/account/" \ > -H "Authorization: Bearer demo_oauth_token"
APIはテスト結果を返します。どのように上記のGuzzleをフォーマットしますか?
はいしかし、それはまだ私と間違って何かをすることがあるはずだ401 –
を与えていますあなたが受け取っているアクセストークン。私はちょうどそのcURLコマンドを実行し、デモの返信を返しました。これは、他に見逃されているヘッダーがないことを示しています。ちょうど徹底的に...デモcURLコールをあなたのグーズコードに適応させ、それが返す応答を分析してみてください。 –
私はちょうど新しい認証トークンを生成し、それが期限切れであったかどうかを再度試しましたが、それでも私にそのエラーを与えています。トークンが文字列以外のものになっている可能性がありますか? –