在访问 gmail api 时从进入同意屏幕的 url 获取 authuser

Posted

技术标签:

【中文标题】在访问 gmail api 时从进入同意屏幕的 url 获取 authuser【英文标题】:get authuser from url coming in consent screen while accessing gmail api 【发布时间】:2015-01-03 21:04:46 【问题描述】:

我创建了一个应用程序,在该应用程序中,我从应用程序中的 gmail 收件箱中获取所有邮件。现在我想要的是当用户点击我的应用程序中的任何电子邮件时,用户应该被重定向到实际的 gmail 和用户点击的电子邮件应该在 gmail 中打开。因此,我通过在我的应用程序的 href 标记中提供 mail.google.com/mail/u/0/#inbox/ 链接来实现该功能。

现在我面临的问题是假设用户在浏览器中打开了多个 gmail 帐户。由于我提供了硬编码器 url“https://mail.google.com/mail/u/0/#inbox/”,它总是以“0”authuser id 打开邮件。那么有什么方法可以在我的应用程序中动态获取这个值。我检查了gmail是如何做到的,假设当我打开第一个gmail帐户时,url将是mail.google.com/mail/u/0/#inbox。如果我打开另一个帐户,则 url 将是 mail.google.com/mail/u/1/#inbox。所以设置为 0,现在将是 1。

所以我检查了当我们访问任何 gmail api 时,谷歌会提供同意屏幕,如果打开了多个帐户,谷歌会为您提供屏幕,您可以在其中选择帐户。选择帐户后,将出现同意屏幕。所以 url 就像“https://accounts.google.com/o/oauth2/auth?scope=https://www.googleapis.com/auth/gmail.readonly&response_type=code&redirect_uri=http://localhost:8080/web/guest/GmailDashboard&access_type=online&approval_prompt=auto&client_id=19502573792-0fvebvrb4jg1usmn2r0hfka31la8gtfs.apps.googleusercontent.com&hl=en&from_login=1&as=4ded27cb6d28ee3b&pli=1&authuser=0”。我想要应用程序中的最后一个参数 authuser。

任何帮助将不胜感激。

感谢和问候, Abdulbasit F Shaikh。

【问题讨论】:

How can I reliably link to a Gmail conversation given a thread ID if the user is logged into multiple accounts?的可能重复 【参考方案1】:

一种解决方案是包含一个名为 authUser 的查询参数,该参数指定您要链接到的电子邮件帐户:

https://mail.google.com/mail/?authuser=your.email.address@gmail.com#all/138d85da096d2126

请看以下链接:

How can I reliably link to a Gmail conversation given a thread ID if the user is logged into multiple accounts?

【讨论】:

一个网站的链接可能会中断,请在***上发布解决方案:)【参考方案2】:

我认为您可以提供下面的 url 以动态访问多个 gmail 地址,而不是提供硬代码 url:

https://accounts.google.com/ServiceLoginAuth?continue=http://mail.google.com/gmail&service=mail&Email=yourname@gmail.com

【讨论】:

谢谢 gui47。我试过以下网址。但这里的问题是我已经登录了我的 gmail 帐户。然后它也要求我再次登录。另一件事是我想打开一封受人尊敬的电子邮件。所以在 url 的某个地方,我需要传递我想打开的电子邮件的 messageID 与“mail.google.com/mail/u/0/#inbox/149dde503b69c6a2”相同。如您所见,最后一个值“149dde503b69c6a2”是我要打开的电子邮件的消息 ID。任何帮助将不胜感激。

以上是关于在访问 gmail api 时从进入同意屏幕的 url 获取 authuser的主要内容,如果未能解决你的问题,请参考以下文章

禁用 Google 同意屏幕上的复选框

使用 Codelabs 教程通过 Cloud Functions 访问 Gmail API

Google 登录 API 同意书

如何在Gmail API中强制删除Google默认选定的帐户?

Android 中的空白 Google 登录 OAuth 同意屏幕

通过 Google API 获取 gmail 消息的直接链接