Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将google oauth2与Go一起使用_Go_Oauth 2.0_Google Api_Token_Google Oauth - Fatal编程技术网

将google oauth2与Go一起使用

将google oauth2与Go一起使用,go,oauth-2.0,google-api,token,google-oauth,Go,Oauth 2.0,Google Api,Token,Google Oauth,我正在使用Go,我想使用Google API。 从中,我发现了以下示例: // Your credentials should be obtained from the Google // Developer Console (https://console.developers.google.com). conf := &oauth2.Config{ ClientID: "YOUR_CLIENT_ID", ClientSecret: &quo

我正在使用Go,我想使用Google API。 从中,我发现了以下示例:

// 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("...")
我有两个问题:

  • 什么是
    重定向\u url
    ?在开发者控制台中,我可以获取我的
    客户机id
    我的客户机机密
    ,但我不知道什么是
    重定向url
    。我在哪里能找到它

  • 授权码是什么?我在哪里能找到它


谢谢

OAuth的工作方式是

1) 您向供应商(在本例中为Google)注册应用程序,注册后将收到ApplicationID(或clientID)和密钥。此ApplicationID是您的应用程序在google应用程序世界中的唯一ID

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

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

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

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

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


希望这有帮助

好的,我看到了这个过程,但在我的例子中,我没有这个重定向url(我想)。我正在开发一个试图从谷歌API获取数据的客户端。我不明白它是如何工作的。你必须传递重定向url,这必须是你的页面,需要通过internet公开访问。好的,谢谢。还有一个小问题:有没有办法只使用API键来使用GoogleAPI?在开发者控制台上,我可以创建一个QimpleAPI密钥,如果google使用oauth,那么在我上面描述的过程结束时,您将获得一个Auth令牌,当您调用API时,这个令牌将需要在http头中传递。请让我知道这是否有助于重定向URL不可公开访问。它需要仅从用户的浏览器访问。例如,如果应用程序在本地运行,就可以正常工作。