【问题标题】:Use google oauth2 with Go在 Go 中使用 google oauth2
【发布时间】:2018-08-03 07:29:51
【问题描述】:

我正在使用 Go,我想使用 Google API。 从doc,我找到了这个例子:

// Your credentials should be obtained from the Google
// Developer Console (https://console.developers.google.com).
conf := &oauth2.Config{
    ClientID:     "YOUR_CLIENT_ID",
    ClientSecret: "YOUR_CLIENT_SECRET",
    RedirectURL:  "YOUR_REDIRECT_URL",
    Scopes: []string{
        "https://www.googleapis.com/auth/bigquery",
        "https://www.googleapis.com/auth/blogger",
    },
    Endpoint: google.Endpoint,
}
// Redirect user to Google's consent page to ask for permission
// for the scopes specified above.
url := conf.AuthCodeURL("state")
fmt.Printf("Visit the URL for the auth dialog: %v", url)

// Handle the exchange code to initiate a transport.
tok, err := conf.Exchange(oauth2.NoContext, "authorization-code")
if err != nil {
    log.Fatal(err)
}
client := conf.Client(oauth2.NoContext, tok)
client.Get("...")

我有两个问题:

  • redirect_url 是什么?在开发者控制台中,我可以得到我的client_idmy client_secret,但我不知道redirect_url 是什么。我在哪里可以找到它?

  • authorization_code 是什么?我在哪里可以找到它?

谢谢

【问题讨论】:

    标签: go oauth-2.0 google-api token google-oauth


    【解决方案1】:

    OAuth 的工作方式是,

    1) 您在本例中的 Google 供应商处注册您的应用程序,当您进行注册时,您将收到一个 ApplicationID(或 clientID)和一个密钥。此 ApplicationID 是您的应用程序在 Google 应用世界中的唯一 ID。

    2) 当您要求您的用户通过 google 进行身份验证时,您将使用您的 ApplicationID 和重定向 URL 将用户重定向到 Google 身份验证页面。请注意,这里的重定向 URL 是您的页面。

    3) 一旦用户进行身份验证并向您的应用程序提供授权,谷歌就会使用代码将用户重定向到您的重定向 URL。

    4) 你可以把这段代码看成是整个Authentication session的标识符

    5) 现在用户已通过身份验证,但谷歌如何知道您传递的 ApplicationID 属于您并且您没有冒充其他人,以确保您必须将您在步骤 3 中收到的代码传递回google 连同您的 ApplicationId 和 Secret Key,当您这样做时,Google 将对您进行身份验证并确保您是此应用程序的所有者,然后它将为您提供不记名身份验证令牌和刷新身份验证令牌。

    6) 现在身份验证和授权已完成,对于 API 调用,您可以使用不记名令牌进行授权,当不记名令牌过期时,您可以使用刷新令牌获取新的不记名令牌。

    希望对你有帮助

    【讨论】:

    • 好的,我看到了这个过程,但就我而言,我没有这个重定向网址(我认为)。我正在开发一个试图从 Google API 获取一些数据的客户端。我不明白它如何与它一起工作..
    • 您必须传递重定向 url,这必须是您需要通过 Internet 公开访问的页面。
    • 好的,谢谢。还有一个小问题:有什么方法可以仅通过 API 密钥使用 Google API?在开发者控制台上,我可以创建一个 qimple API 密钥
    • 如果google使用oauth,那么在我上面描述的过程结束时你会得到一个Auth token,这个token在你调用API时需要传入http header。如果这有帮助,请告诉我
    • 重定向 URL 不可公开访问。它只需要可以从用户的浏览器访问。例如,如果应用程序在本地运行,localhost 就可以正常工作。
    猜你喜欢
    • 2014-09-23
    • 2020-05-02
    • 1970-01-01
    • 2014-12-01
    • 1970-01-01
    • 2012-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多