Мне нужно реализовать авторизацию bitbucket в проекте Symfony2. Я использую HWIOAuthBundle и Guzzle для формирования запроса. Чтобы получать электронные письма, мне нужно получить ответ от json от
https://bitbucket.org/api/1.0/users/{имя_учетной_записи} / электронная почта
Но каждый раз, когда я получаю
Ответ клиента об ошибке [url] https://bitbucket.org/api/1.0/users/{accountname} / emails [код статуса] 401 [фраза причины] НЕ РАЗРЕШЕНО «
Но я уже авторизован в Bitbucket.
Вот мой код:
$url = 'https://bitbucket.org/api/1.0/users/'.$response->getUsername().'/emails';
$client = new Client();
$request = $client->createRequest('GET', $url);
$emails = $client->send($request);
Похоже, вы не предоставляете токен доступа при выполнении запросов, поэтому Bitbucket отклоняет их с помощью 401.
От их документы:
Как только у вас есть токен доступа, согласно RFC-6750, вы можете использовать его в запросе любым из следующих способов (перечисленных от наиболее до наименее желательных):
- Отправьте его в заголовке запроса: Авторизация: Bearer {access_token}
- Включите его в тело POST (application / x-www-form-urlencoded) как access_token = {access_token}
- Поместите в строку запроса не POST:? Access_token = {access_token}
Сначала я посмотрю документы используемой вами библиотеки OAuth и выясню, как получить токен доступа пользователя для конкретной службы (в вашем случае Bitbucket). Затем я бы включил его в заголовки запроса в Guzzle:
$client = new Client();
$request = $client->createRequest(
'GET',
'https://bitbucket.org/api/1.0/users/' . $response->getUsername() . '/emails',
[
'Authorization' => 'Bearer ' . $userOauthAccessToken,
]
);
$emails = $client->send($request);
Других решений пока нет …