假设我有一个需要在后台服务中访问Drive文件的Web应用程序.它将拥有自己正在访问的文件,或者在所有者共享文档的Google帐户中运行.
我知道我的应用程序需要一个刷新令牌,但我不想编写代码来获取它,因为我只会做一次.
NB.这不是使用服务帐户.该应用将在传统的Google帐户下运行.在某些情况下,服务帐户是一种有效的方法.但是,使用Oauth Playground模拟应用程序的技术可以节省大量的冗余工作,并适用于不支持与服务帐户共享的任何API.
我正在使用gmail-api编写基于电子邮件的应用程序,我需要检索来自谷歌的电子邮件地址的用户公共图像.我已经看到其他应用程序这样做,但我似乎无法可靠地获取此数据.
更多信息:
谢谢!
编辑:
我知道如果我有其他用户的用户ID,我可以从谷歌加上获得所需的图像.但是,我找不到基于电子邮件地址获取用户标识的方法.
使用Gmail API.我的客户端密码文件已下载并适用于Ruby.当我尝试quickstart.py(python)版本时,我收到此错误
File "quickstart.py", line 70, in <module>
main()
File "quickstart.py", line 55, in main
credentials = get_credentials()
File "quickstart.py", line 38, in get_credentials
credentials = store.get()
File "/Library/Python/2.7/site-packages/oauth2client/client.py", line 374, in get
return self.locked_get()
File "/Library/Python/2.7/site-packages/oauth2client/file.py", line 79, in locked_get
credentials = Credentials.new_from_json(content)
File "/Library/Python/2.7/site-packages/oauth2client/client.py", line 281, in new_from_json
module = data['_module']
KeyError: '_module'
Run Code Online (Sandbox Code Playgroud)
我根本没有更改文件,只是将client_secret.json添加到该工作目录并安装了google-api-python-client.我的python代码来自这里:https://developers.google.com/gmail/api/quickstart/python
我正在尝试从我的Android应用访问新的Gmail API(已于25.06.2014发布),以便返回某个用户帐户中的所有电子邮件.我正在使用ADT插件在Eclipse中开发应用程序.
到目前为止我做了什么:
我在Google Developers Console中注册了该应用程序
(link:console.developers.google.com/project).
我已实施Google+登录按钮(链接:developers.google.com/ +/mobile/android/sign-in ).Google+登录按钮可对用户进行身份验证并管理OAuth 2.0流程,从而简化您与Google API的集成.
我已将附加范围"https:// www.googleapis.com/auth/gmail.readonly"添加到Google+授权中,以便按照
(链接:developers.google.com/gmail/api/v1)中的说明访问Gmail API / reference/users/threads/list).
此时我有一个初始化的GoogleApiClient对象.
GoogleApiClient对象将ServiceConnection(链接:developer.android.com/reference/android/content/ServiceConnection.html)包装到Google Play服务.GoogleApiClient对象用于与Google+ API通信,并在与服务建立异步连接后正常运行,表明:
如何从此处继续使用此httprequest获取所有消息?
我此时尝试访问Gmail API,但我收到身份验证错误401:需要登录,即使Google+登录成功,我也成功返回了用户圈子列表.
编辑:SecondActivity.java
import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import com.google.android.gms.auth.GoogleAuthException;
import com.google.android.gms.auth.GoogleAuthUtil;
import com.google.android.gms.auth.GooglePlayServicesAvailabilityException;
import com.google.android.gms.auth.UserRecoverableAuthException;
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.GooglePlayServicesUtil;
import com.google.android.gms.common.SignInButton;
import com.google.android.gms.common.api.CommonStatusCodes;
import com.google.android.gms.common.api.GoogleApiClient;
import com.google.android.gms.common.api.GoogleApiClient.ConnectionCallbacks;
import com.google.android.gms.common.api.GoogleApiClient.OnConnectionFailedListener;
import com.google.android.gms.common.api.ResultCallback;
import com.google.android.gms.common.api.Scope;
import com.google.android.gms.plus.People; …
Run Code Online (Sandbox Code Playgroud) 使用gmail和python发送电子邮件的推荐方法是什么?
有很多SO线程,但大多数都是旧的,并且用户名和密码的smtp不再工作或用户必须降级他们的Gmail的安全性(例如见这里).
OAuth是推荐的方式吗?
使用GMail API中的示例代码示例:发送邮件,并在遵循身份验证规则后,通过gmail帐户发送以编程方式生成的电子邮件非常简单.该示例中不明显的是如何将该电子邮件设置为HTML格式.
如何使用python在我的gmail-api发送消息中获取HTML格式?
message_body = "Hello!\nYou've just received a test message!\n\nSincerely,\n-Test Message Generator\n"
Hello!
You've just received a test message!
Sincerely,
-Test Message Generator
Run Code Online (Sandbox Code Playgroud)
下面是该示例的略微修改版本,但仍然有效:
import argparse
import base64
from pprint import pformat
from pprint import pprint
import httplib2
import os
from email.MIMEMultipart import MIMEMultipart
from email.MIMEText import MIMEText
from apiclient import discovery
from oauth2client import client
from oauth2client import tools
from oauth2client.file import Storage
SCOPES = 'https://mail.google.com/'
CLIENT_SECRET_FILE = 'client_secret.json'
APPLICATION_NAME …
Run Code Online (Sandbox Code Playgroud) 我们目前用于google-api-python-client
处理面向用户的 OAuth 流程。我们有一些用户给我们发电子邮件询问为什么他们的帐户没有成功导入,当我们查看时,他们的令牌没有适当的范围。例如,我们希望找到所有这些范围:
https://www.googleapis.com/auth/gmail.metadata
openid
https://www.googleapis.com/auth/userinfo.email
但我们只收到最后 2 个。当我们查看 OAuth 流程时,我们注意到我们的 OAuth 流程如下所示(应用程序名称和帐户名称经过编辑)。请注意,请求的范围有一个复选框,并且默认情况下该复选框处于未选中状态。(从 2020 年中期到大约一周前,此流程有 2 个额外的确认步骤,但默认情况下选中了最后一个复选框。)
将其与流行应用程序 Fantastical 的 OAuth 流程进行比较(许多其他应用程序,包括 Spark,看起来很相似):
在找到链接到Google 博客上这篇文章的StackOverflow 答案后,似乎有些应用程序已继承到第二个流程,但第一个流程是新的默认流程。两个问题:
默认情况下未选中的复选框似乎是一个相对较新的更改,我找不到任何有关它的文档。这是新的默认行为,还是 OAuth 流程中是否有一个参数/某些内容我们可以更改以默认检查它?当未选中时,用户认为他们不需要检查它,因此他们按“继续”,然后我们的应用程序必须抛出错误并向用户解释他们需要检查该范围复选框。现在复选框未选中似乎有点疯狂,因为它是我明确要求的范围……这就是此流程的全部要点。
有没有什么方法可以使我们的流程与 Fantastical、Spark 以及 2018 年左右之前创建的任何其他 OAuth 应用程序仍然具有的旧的、更简单的流程保持一致?或者那些其他旧应用程序是否有过渡到新流程的预计到达时间?上述 Google 博文表示,新流程将“在 2019 年初扩展到现有客户”,因此我们大约晚了 2.5 年才做出这一改变。就目前情况而言,它使“新”OAuth 应用程序(我们的应用程序是在 2019 年创建的,所以算不上新......)处于令人难以置信的劣势,因为它的步骤更多,需要明确同意,更容易出现用户错误,并且使它看起来像我们的应用程序在任何方面都受到较少的审查或“安全”,因为其流程与用户接受的许多其他应用程序的培训流程截然不同。
这个问题已经存在了几个月了,所以也发布这篇文章来帮助处于相同位置的其他人。一些额外的要点,以防对任何人有帮助:
如果我从 Fantastical 流程中获取 client_id 和 redirect_url 并在我们应用程序的链接中使用它,则该流程看起来与他们的相同。所以它似乎是由客户端 ID 驱动的,而不是 URL 或我们流程中发生的某些事情。
我们的应用已通过 Google 的第三方安全评估并通过,因此它可能与我们请求的范围或我们的应用在审批流程中的状态无关
我们的流程和 Fantastical 都发生在 Web 视图中,因此它不太可能与本地与 Web 视图相关 …
google-api google-oauth google-api-python-client google-cloud-platform gmail-api
我正在使用Google新发布的Gmail API的python版本.
以下调用仅返回消息ID列表:
service.users().messages().list(userId = 'me').execute()
Run Code Online (Sandbox Code Playgroud)
但后来我只有一个消息ID列表,需要迭代它们并逐个获取它们.
有没有办法在单个调用中获取id列表的整个消息内容?(类似于在Google Calendar API中完成的操作)?
如果还不支持,Google会考虑在API中添加这些内容吗?
这是适合我的解决方案:
batch = BatchHttpRequest()
for msg_id in message_ids:
batch.add(service.users().messages().get(userId = 'me', id = msg_id['id']), callback = mycallbackfunc)
batch.execute()
有没有办法通过Gmail API或其他方式访问Google Inbox提醒?我知道Google收件箱可以显示来自Google Keep的提醒,但无法找到有关此通信如何完成的任何信息.
gmail-api ×10
google-api ×4
python ×4
gmail ×3
google-oauth ×3
google-plus ×2
oauth-2.0 ×2
android ×1
html ×1
mime-message ×1