调用 GMAIL API 时出现间歇性错误 - "The caller does not have permission"



间歇性地收到此错误

请求时 HttpError 403 https://www.googleapis.com/discovery/v1/apis/gmail/v1/rest 返回"调用方没有权限">

它有时有效,有时则无效。我在oauth2操场上看到了同样的问题

这是我的代码 -

googlecredentials = GoogleCredentials(
access_token=None,
client_id='xxx',
client_secret='xxxx',
refresh_token='xxxx',
token_expiry=None,
token_uri="https://www.googleapis.com/oauth2/v3/token", 
user_agent='Python client library'
)
service = build('gmail', 'v1', credentials=googlecredentials)
results = service.users().labels().list(userId='me').execute()
labels = results.get('labels', [])
response = service.users().messages().list(userId='me', q='subject:FDA').execute()
print(response)

我最近也遇到了这个问题。我已经使用GMAIL API一年多了,我从未遇到过这个问题。我不知道我们这边是否有问题,或者Gmail改变了他们的使用政策。但是,无论如何,我确实设法找到了解决方案。我遇到的主要问题是我的信条(在您的情况下是谷歌凭据(已过期,每次过期时我都必须刷新它们。因此,一个简单的解决方案是刷新它们。

if not creds or not creds.valid:
if creds and creds.expired and creds.refresh_token:
creds.refresh(Request())

我的母语是python,所以我用同一种语言编写了代码,但你可以去这里,看看你的母语也有类似的东西

谢谢。

我也突然看到了这一点。 几个月来一切正常,代码没有任何变化。 还看到令牌正在刷新。

-rw-r--r-- 1 科萨兰巴拉拉贾工作人员 728 七月 6 12:50 令牌.pickle

但是错误没有得到解决。

从一开始就具有刷新代码。

如果没有可用的(有效(凭据,请让用户登录。

# If token.pickle does not exist there are no valid token, let user log in again to generate token and save the token for furture use.
if not creds or not creds.valid:
if creds and creds.expired and creds.refresh_token:
creds.refresh(Request())
else:
flow = InstalledAppFlow.from_client_secrets_file(credentialspath, self.SCOPES) # Change credentials.json to credentialspath
creds = flow.run_local_server(port=0)
# Save the credentials for the next run
with open(tokenpath, 'wb') as token: # Change token.pickle to tokenpath
pickle.dump(creds, token)
return creds

相关内容

最新更新