gpt4 book ai didi

php - Gmail API : Insufficient Permission

转载 作者:可可西里 更新时间:2023-11-01 13:14:29 25 4
gpt4 key购买 nike

情况:

我正在测试 Gmail API对于我的应用程序。

我已经测试了一些请求,它们运行良好。例如获取消息、获取用户历史记录、获取草稿列表等。

基本上所有的只读请求都工作正常。

我遇到了一些与其他请求的权限相关的问题,例如,当我必须编写或删除草稿时。

这是我得到的错误:

(403) Insufficient Permission

代码:

这是初始化应用程序的函数:

public function gmail_init_service()
{
$client = new Google_Client();

$client->setApplicationName("Gmail API test");
$client->setDeveloperKey("MY_KEY");
$client->setClientSecret('MY_CLIENT_SECRET');
$client->SetClientId('MY_CLIENT_ID');
$client->setScopes(array('https://mail.google.com/'));
$client->setAccessToken('{"access_token":"MY_ACCESS_TOKEN","token_type":"Bearer","expires_in":3600,"refresh_token":"MY_REFRESH_TOKEN","created":1433502343}');

$service = new Google_Service_Gmail($client);

return $service;
}

这是删除一个草稿的请求:

public function gmail_delete_draft()
{
$service = $this->gmail_init_service();

// --------------- Get draft list --------------

$list = $service->users_drafts->listUsersDrafts('me');
$draftList = $list->getDrafts();

// --------------- Get draft IDs ---------------

$inbox_draft = [];

foreach($draftList as $mlist)
{
$draftId = $mlist->id;
$optParamsGet2['format'] = 'full';
$single_message = $service->users_drafts->get('me', $draftId , $optParamsGet2);

$inbox_draft[]['draftId'] = $draftId;
$inbox_draft[]['draft'] = $single_message;
}

// --------------- Delete draft ---------------

$draft_delete = $service->users_drafts->delete('me', 'DRAFT_ID' );
}

编辑:

我已尝试撤销权限并设置新凭据。初始化服务时声明的范围是:

https://mail.google.com/

如文档中所述,授予对该帐户的完全访问权限

但我仍然遇到同样的错误。以下请求的完全相同的错误:

删除草稿-创建草稿-创建标签-删除消息

问题:

为什么我会收到这个错误?
它与缓存中存储的相同值有关吗?
还是与API的权限有关?

最佳答案

您需要' https://www.googleapis.com/auth/gmail.compose ' 创建草稿。那么如果你会发生什么

$client->setScopes(array(
'https://mail.google.com/',
'https://www.googleapis.com/auth/gmail.compose'
));

或者如果你想变得更正式

define('SCOPES', implode(' ', array(
Google_Service_Gmail::MAIL_GOOGLE_COM,
Google_Service_Gmail::GMAIL_COMPOSE)
));

$client->setScopes(SCOPES)

或者任何有效的 php 可能是什么(我已经有一段时间没有使用 php 了)。

请注意,如果您已经有一个 token ,您可能需要做一些体操来撤销它,以便您可以重新发布添加的权限。这可能意味着删除一个文件,可能名为 gmail.storage,或者,如果您有权访问帐户登录并前往 https://security.google.com/settings/security/permissions可以手动撤销访问权限。

此链接可能相关: https://developers.google.com/gmail/api/auth/scopes

还有一条蜿蜒曲折的路 through the source code可能很有启发性。

您或许可以收集一些见解 from my battle with this same sort of thing under Python

关于php - Gmail API : Insufficient Permission,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30661489/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com