【问题标题】:How can I authenticate Gmail API without Google Dll如何在没有 Google Dll 的情况下验证 Gmail API
【发布时间】:2017-09-15 06:41:00
【问题描述】:

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

我收到一个错误

【问题讨论】:

    标签: authentication oauth gmail-api google-oauth


    【解决方案1】:

    您可以使用任何可以处理 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
    

    【讨论】:

    • 非常感谢。这正是我想要的。
    • 这里是 gmail 范围的列表。 developers.google.com/gmail/api/auth/scopesGmail 备注。在测试和开发时使用虚拟 gmail 帐户。如果您有一个疯狂的循环,您不希望您的真实电子邮件帐户被禁止:)
    • 当我在成功收到代码后尝试获取令牌时,我使用此 url accounts.google.com/o/oauth2/token?code={code received}&client_id={myclient id}.apps.googleusercontent.com&client_secret={mmy secret }&redirect_uri=urn:ietf:wg:oauth:2.0:oob&grant_type=authorization_code 但我收到无效的请求消息。
    • 它的 HTTP post code={code received}&client_id={myclient id}&client_secret={mmy secret}&redirect_uri=urn:ietf:wg:oauth:2.0:oob&grant_type=au‌​thorization_code 被发布到account.google.com/o/oauth2/token 添加 _ 你在做一个 HTTP 获取
    • 我正在从 fidler 上传一张照片,只是为了看看一切是否正确
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-18
    • 1970-01-01
    • 2021-02-10
    • 2020-09-28
    • 1970-01-01
    • 2012-01-11
    相关资源
    最近更新 更多