如何在没有 Google Dll 的情况下验证 Gmail API

How can I authenticate Gmail API without Google Dll

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

我遇到错误

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

注意:client_id、redirect_uri、client_secret 都是您在 Google Developers Console 中为您的应用设置的值。范围将取决于您要访问哪个 Google Api,超过一个可以用逗号分隔。在此示例中,我将使用 Google Analytics 的范围。

第一步申请权限:

这是您需要向请求访问的用户显示的 URL。它是一个 HTTP Get 调用,可以放在任何 Web 浏览器中。 Note: 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

第二步:

一旦他们点击上面的 link,您应该会得到一个验证码。

以下请求将交换访问令牌和刷新令牌的代码。这是一个 HTTP POST Note: 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 是您将用来向服务发出请求的内容。一小时后,您的访问令牌将过期,您将需要请求一个新的 access_token,您将上面获得的 refresh_token 和 HTTP Post 发送到:Note: 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 }

我的完整教程Google 3 legged oauth2 flow

用法:

任何您希望使用的 Gmail api 请求只需在末尾加上 access_token=yourtoken,您就应该可以访问。

或者您可以设置 header。

Authorization  Bearer accessToken