使用 OAuth 2 令牌调用 MailChimp API

Posted

技术标签:

【中文标题】使用 OAuth 2 令牌调用 MailChimp API【英文标题】:MailChimp API call with OAuth 2 token 【发布时间】:2018-05-07 21:15:22 【问题描述】:

我无法使用 OAuth 2 令牌调用 Mailchimps API 3.0 端点,例如 /lists

但是,当我尝试使用以下方法访问 /lists 时,我已经拥有令牌并拥有来自 /metadata 调用的端点

//Get lists
$client = new \GuzzleHttp\Client(['base_uri' => $datacenter]);
$headers = [
        'Authorization' => 'OAuth ' . $token,
        'Accept' => 'application/json',
        'Host' => $client_endpoint,
        'User-Agent' => 'oauth2-draft-v10'
    ];
$response = $client->request('GET', 'lists', [
        'headers' => $headers
    ]);
$lists = json_decode($response->getBody());

当然有一个简单的解决方案,我是 OAuth 2 和 MailChimp 的新手,并且很难找到有关使用 OAuth2 令牌调用 MailChimp 的任何信息。

我也尝试过以下...

//Get list data
$client = new \GuzzleHttp\Client(['base_uri' => $client_endpoint]);
$headers = [
        'Authorization' => 'OAuth ' . $token
    ];

$response = $client->request('GET', 'lists',[
        'user' => 'anystring:' . $token,
        'headers' => $headers
    ]);
Log::debug($response);

这里的任何帮助都会非常有用

【问题讨论】:

我忘了补充说我第一次尝试收到错误 400 错误请求,第二次找不到错误 404 能否请您提供第一次通话的响应正文和标头? $response->getBody()->getContents(); 【参考方案1】:

在标题中以Authorization: OAuth [token] 格式提供令牌似乎无法按预期工作。

我使用 PostMan 完成了以下请求,提供代码以方便使用:

// GET https://us1.api.mailchimp.com/3.0/lists
// authorization:"Bearer 0319[redacted]f966" 

$response = $client->get( $datacenter.'/3.0/lists', [
    'headers' => ['Authorization' => 'Bearer ' . $token]
]);
$lists = json_decode($response->getBody());

注意:代码未测试,请求已测试

【讨论】:

以上是关于使用 OAuth 2 令牌调用 MailChimp API的主要内容,如果未能解决你的问题,请参考以下文章

MailChimp OAuth2 访问令牌

Mailchimp“invalid_grant”错误

无法在 node.js 中交换访问令牌的代码。 Mailchimp API

OAuth 2.0 访问令牌未加密?

OAuth 2.0实现分布式认证授权-jwt令牌和普通令牌的区别

使用 OAuth 2.0 Google App Engine 刷新访问令牌