【问题标题】:Get email from bitbucket从 bitbucket 获取电子邮件
【发布时间】:2015-05-15 13:33:17
【问题描述】:

我需要在 Symfony2 项目上实现 bitbucket 授权。我正在使用 HWIOAuthBundle 和 Guzzle 来形成请求。要获得电子邮件,我需要从 https://bitbucket.org/api/1.0/users/{accountname}/电子邮件 但每次我得到

客户端错误响应 [url] https://bitbucket.org/api/1.0/users/{accountname}/emails [状态代码] 401 [原因短语] 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 中使用它吗?这种类型的调用需要客户端的认证

标签: php symfony http oauth bitbucket


【解决方案1】:

您在发出请求时似乎没有提供访问令牌,因此 Bitbucket 以 401 拒绝它们。

来自他们的docs

根据 RFC-6750 获得访问令牌后,您可以通过以下任何方式在请求中使用它(从最理想到最不理想列出):

  1. 在请求标头中发送:授权:Bearer {access_token}
  2. 将其作为 access_token={access_token} 包含在(application/x-www-form-urlencoded)POST 正文中
  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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-14
    • 1970-01-01
    • 1970-01-01
    • 2020-11-06
    • 1970-01-01
    • 1970-01-01
    • 2017-10-09
    相关资源
    最近更新 更多