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

kos*_*tas 3 authentication oauth google-oauth gmail-api google-oauth2

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

在此处输入图片说明

我收到一个错误

在此处输入图片说明

DaI*_*mTo 5

您可以使用可以处理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
Run Code Online (Sandbox Code Playgroud)

第二步:

他们点击上面的链接后,您将获得验证码。

以下请求将代码交换为访问令牌和刷新令牌。这是一个HTTP POSTNote: 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
Run Code Online (Sandbox Code Playgroud)

响应:

{ "access_token" : "ya29.1.AADtN_VSBMC2Ga2lhxsTKjVQ_ROco8VbD6h01aj4PcKHLm6qvHbNtn-_BIzXMw", "token_type" : "Bearer", "expires_in" : 3600, "refresh_token" : "1/J-3zPA8XR1o_cXebV9sDKn_f5MTqaFhKFxH-3PUPiJ4" }
Run Code Online (Sandbox Code Playgroud)

使用刷新令牌:

从上述请求中获得的access_token是用于向该服务发出请求的东西。一小时后,您的访问令牌将过期,您将需要请求一个新的access_token,然后获取上面获得的refresh_token并将其HTTP发布到: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 
Run Code Online (Sandbox Code Playgroud)

这是响应:

{ "access_token" : "ya29.1.AADtN_XK16As2ZHlScqOxGtntIlevNcasMSPwGiE3pe5ANZfrmJTcsI3ZtAjv4sDrPDRnQ", "token_type" : "Bearer", "expires_in" : 3600 }
Run Code Online (Sandbox Code Playgroud)

我的完整教程Google 3有腿的oauth2流

用法

您希望使用的对Gmail api的任何请求最终都只需要添加access_token = yourtoken即可,您应该可以访问。

或者您可以设置标题。

Authorization  Bearer accessToken
Run Code Online (Sandbox Code Playgroud)

  • 非常感谢。那正是我想要的。 (2认同)