从Bitbucket获取电子邮件

3
我需要在Symfony2项目上实现Bitbucket授权。我正在使用HWIOAuthBundle和Guzzle构建请求。为了获取电子邮件,我需要从https://bitbucket.org/api/1.0/users/{accountname}/emails获得json响应。但每次都会收到以下错误信息:

客户端错误响应 [url] https://bitbucket.org/api/1.0/users/{accountname}/emails [status code] 401 [reason phrase] UNAUTHORIZED"

但我已经在Bitbucket进行了授权。这是我的代码:

$url = 'https://bitbucket.org/api/1.0/users/'.$response->getUsername().'/emails';
    $client = new Client();
    $request = $client->createRequest('GET', $url);
    $emails = $client->send($request);

你在Symfony中使用它吗?这种类型的调用需要客户端的身份验证。 - GianArb
1个回答

1

看起来你在发送请求时没有提供访问令牌,因此 Bitbucket 会拒绝这些请求并返回 401。

根据他们的 文档

一旦你有了访问令牌,根据 RFC-6750,你可以在任何以下方式中的请求中使用它(从最优到最劣排列):

  1. 将其作为请求头发送:Authorization: Bearer {access_token}
  2. 将其包含在(application/x-www-form-urlencoded)POST 请求体中,如 access_token={access_token}
  3. 将其放在非 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);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接