如何在没有Google Dll的情况下进行Gmail API身份验证

3
我正在尝试在没有Google Dll的情况下使用Gmail API,并且希望仅使用HTTP请求。如何进行身份验证和授权以及授权范围(例如使用Google dll创建服务)?

enter image description here

我遇到了一个错误

enter image description here

1个回答

6

您可以使用任何能够处理HTTP POST和HTTP GET的语言进行Google身份验证。

注意:client_id、redirect_uri、client_secret都是在Google开发者控制台中为您的应用设置的值。Scope将取决于您想要访问哪个Google Api,可以用逗号分隔多个。在本例中,我将使用Google Analytics的范围。

第一步请求访问:

这是您需要向用户显示以请求访问权限的URL。这是一个HTTP Get调用,可以放置在任何Web浏览器中。 注意:response_type=code

https://accounts.google.com/o/oauth2/auth?client_id={clientid}&redirect_uri=urn:ietf:wg:oauth:2.0:oob&scope=https://www.googleapis.com/auth/analytics.readonly&response_type=code

第二步:

一旦他们点击上面的链接,您应该得到一个身份验证代码。

以下请求将交换代码以获取访问令牌和刷新令牌。这是一个HTTP POST请求。注意:grant_type=authorization_code

https://accounts.google.com/o/oauth2/token 
code=4/X9lG6uWd8-MMJPElWggHZRzyFKtp.QubAT_P-GEwePvB8fYmgkJzntDnaiAI&client_id={ClientId&client_secret={ClientSecret}&redirect_uri=urn:ietf:wg:oauth:2.0:oob&grant_type=authorization_code

响应:

{ "access_token" : "ya29.1.AADtN_VSBMC2Ga2lhxsTKjVQ_ROco8VbD6h01aj4PcKHLm6qvHbNtn-_BIzXMw", "token_type" : "Bearer", "expires_in" : 3600, "refresh_token" : "1/J-3zPA8XR1o_cXebV9sDKn_f5MTqaFhKFxH-3PUPiJ4" }

使用刷新令牌:

从上述请求中获取的access_token是您将用于向服务进行请求的令牌。一个小时后,您的访问令牌将过期,您需要请求一个新的访问令牌,您可以使用上面获取的refresh_token并将其以HTTP Post方式发送到:注意:grant_type=refresh_token

https://accounts.google.com/o/oauth2/token 
client_id={ClientId}.apps.googleusercontent.com&client_secret={ClientSecret}&refresh_token=1/ffYmfI0sjR54Ft9oupubLzrJhD1hZS5tWQcyAvNECCA&grant_type=refresh_token 

这是响应的内容:

{ "access_token" : "ya29.1.AADtN_XK16As2ZHlScqOxGtntIlevNcasMSPwGiE3pe5ANZfrmJTcsI3ZtAjv4sDrPDRnQ", "token_type" : "Bearer", "expires_in" : 3600 }

我的完整教程谷歌三级oauth2流程

用法

你只需在请求Gmail API时在末尾附加access_token=yourtoken即可访问。

或者你可以设置标头。

Authorization  Bearer accessToken

2
非常感谢。这正是我正在寻找的。 - kostas
以下是 Gmail 范围列表。https://developers.google.com/gmail/api/auth/scopes 在使用 Gmail 时,请使用虚拟账户进行测试和开发。如果您的程序出现死循环,您不希望真实的电子邮件账户被禁用 :) - Linda Lawton - DaImTo
这是一个HTTP POST请求,包含code={收到的代码}、client_id={我的客户端ID}、client_secret={我的秘钥}、redirect_uri=urn:ietf:wg:oauth:2.0:oob和grant_type=authorization_code参数。将其添加到accounts.google.com/o/oauth2/token中进行POST请求,以获取访问令牌。如果使用HTTP GET请求,则需要在URL末尾添加下划线。 - Linda Lawton - DaImTo
我正在从 Fidler 上传一张照片,只是为了确认一切是否正确。 - kostas
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接