如何访问用户电子邮件而不需要访问用户的整个配置文件?
我在下面调用oauthConfig.Exchange
后得到的tok
似乎没有提供访问“ID令牌”的编程方式,即使我在作用域中包含“email”。
import (
...
"github.com/gin-gonic/gin"
"golang.org/x/oauth2"
"golang.org/x/oauth2/google"
"google.golang.org/api/gmail/v1",
"google.golang.org/api/option"
)
var (
ctx = context.Background()
oauthConfig = &oauth2.Config{
ClientID: ...,
ClientSecret: ...,
RedirectURL: ...,
// ... but it looks like what I want is userinfo.email
Scopes: [ "https://www.googleapis.com/auth/userinfo.profile" ],
Endpoint: google.Endpoint,
}
)
// Handler for the redirect URL.
func redirectHandler(c *gin.Context) {
tok, _ := oauthConfig.Exchange(ctx, c.Query("code"))
httpClient := oauthConfig.Client(ctx, tok)
gmailService, _ := gmail.NewService(ctx, option.WithHTTPClient(httpClient)
userProfile, _ := gmailService.Users.GetProfile("me").Do()
// And now we have the user's email address
// userProfile.EmailAddress
}
// Omitting main etc.
字符串
1条答案
按热度按时间xt0899hw1#
你看起来是想用API
字符串
您没有请求Gmail API作用域。要访问该方法,您需要使用以下范围之一。
如果所有你想知道的是他们的电子邮件地址尝试添加只是范围电子邮件,看看会发生什么
型
但是如果我们解码了ID令牌,我们就能得到我的电子邮件。
型
请注意,您可以使用其中任何一个。