将Google oauth2与Go

时间:2018-08-03 07:29:52

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

我正在使用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是什么?我在哪里可以找到它?

谢谢

1 个答案:

答案 0 :(得分:1)

OAuth的工作方式是

1)您在这种情况下向供应商的Google注册了您的应用程序,当您进行注册时,您将收到一个ApplicationID(或clientID)和一个密钥。此ApplicationID是您在Google应用程序世界中的应用程序的唯一ID。

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

3)一旦用户对自己进行身份验证并为您的应用提供授权,Google便会使用代码将用户重定向到您的重定向URL。

4)您可以将这段代码视为整个身份验证会话的标识符

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

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

希望这会有所帮助