如何在没有Google Dll

时间:2017-04-19 07:11:05

标签: authentication oauth google-oauth gmail-api google-oauth2

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

enter image description here

我收到错误

enter image description here

1 个答案:

答案 0 :(得分: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

第二步:

点击上面的链接后,您应该会收到验证码。

以下请求将交换访问令牌和刷新令牌的代码。这是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发布到: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,您应该有权访问。

或者您可以设置标题。

Authorization  Bearer accessToken