API 23 и Me с недопустимым токеном Guzzle 401

Я пытаюсь подключить пользователей в своем приложении php к 23 и Me api, но у меня возникают проблемы при попытке использовать предоставленный токен. Я могу успешно получить токен с помощью следующего http-действия:

<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>

Который перенаправляет на следующий контроллер и успешно возвращает токен, который я храню в таблице пользователей:

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');

}

Проблема в том, что когда я пытаюсь использовать этот токен для доступа к API 23 и me с помощью gzzle, я подозреваю, что я не знаю, как структурировать вызов. Я пробовал несколько вариантов на следующем:

$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?

0

Решение

Возможно, вам не хватает Bearer ключевое слово.

Пытаться:

$result = $client->get('https://api.23andme.com/3/account/', [
'Authorization' => 'Bearer '.$user->dna_token
]);

return $result;

Я предполагаю, что из примера cURL в документации 23andme я вижу Вот.

curl "https://api.23andme.com/3/account/" \
-H "Authorization: Bearer demo_oauth_token"

1

Другие решения

Хорошо, я нашел проблему. Для того чтобы установить токен на предъявителя с жадностью, вы должны передать его в заголовке следующим образом:

$result = $client->request('GET', 'https://api.23andme.com/3/account/', [
'headers' => [
'Authorization' => 'Bearer ' . $user->dna_token
]
]);
0