首页 > 解决方案 > Guzzle Gmail API 消息请求失败 - 需要登录

问题描述

我尝试从当前登录的用户那里获取消息列表。我正在使用 Guzzle 客户端发出请求。不幸的是,我不太了解有关 API 的 Google 文档。

这是我到目前为止所拥有的:

$client = new Client;

$headers = [
    'content-type' => 'application/json',
    'Authorization' => 'Bearer '.$token->access_token
];

$params = [
    'maxResults'    => 10,
    'client_id'     => config('gmail.clientId'),
    'client_secret' => config('gmail.clientSecret'),
];

$response = $client->get('https://www.googleapis.com/gmail/v1/users/me/messages', [
    $headers,
    $params
]);

使用此代码,我收到一条消息“错误 401 - 需要登录”。我怎样才能做到这一点?在我的应用程序中,每个用户都连接到他们自己的 Gmail 帐户。access_tokens 保存在数据库中。

标签: phpgmail-apiguzzle

解决方案


我不确定您正在使用的 Google API,但您肯定有一个与 Guzzle 相关的错误:

$response = $client->get('https://www.googleapis.com/gmail/v1/users/me/messages', [
    'headers' => $headers,
    'query' => $params,
]);

同样根据文档client_id,您不需要client_secret根据每个请求提供。查看Google 的 PHP 官方认证库,或/和完整的 SDK


推荐阅读