google-app-engine - go-endpoints oauth2 用户始终为零

标签 google-app-engine go google-cloud-endpoints

如何让 api explorer oauth2 为 go-endpoints 工作? (范围 https://www.googleapis.com/auth/userinfo.email )

func (gs *GreetingService) Store(r *http.Request, req *Request, resp *Response) error {
    c := appengine.NewContext(r)
    u := user.Current(c)
    if u != nil {c.Infof("Hello, %v\n", u)}
    if u != nil {fmt.Printf("Hello, %v\n", u)}
}

u 始终为 nil,在 java 中我必须添加类似这样的内容才能使其工作。

@Api(name = "rest1",
     version = "0",
     scopes = {Id.EMAIL_SCOPE},
     clientIds = {Id.WEB_CLIENT_ID, Id.ANDROID_CLIENT_IDd, Id.ANDROID_CLIENT_IDr, Id.EXPLORER_ID},
     audiences = {Id.ANDROID_AUDIENCE})

如何让它适用于 go-endpoints?

编辑

呸!我找到了这个 http://godoc.org/github.com/crhym3/go-endpoints/endpoints#CurrentBearerTokenUser PS golang 的 API_EXPLORER_CLIENT_ID 是什么?

doh2! http://godoc.org/github.com/crhym3/go-endpoints/endpoints#pkg-constants

最佳答案

func (gs *GreetingService) Store(r *http.Request, req *Request, resp *Response) error {
    c := endpoints.NewContext(r)

    u, err := endpoints.CurrentBearerTokenUser(c, []string{"https://www.googleapis.com/auth/userinfo.email"}, []string{"...apps.googleusercontent.com",endpoints.ApiExplorerClientId})
    if err != nil {return err}

    c.Infof("-------------------")
    if u != nil {c.Infof("Hello, %v\n", u)}
    c.Infof("-------------------")
}

关于google-app-engine - go-endpoints oauth2 用户始终为零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20733872/

相关文章:

string - 二进制字符串转unicode

java - Google App Engine 任务队列在调用 Google Cloud Endpoints API 时获得 404

node.js - 预检响应中的 Access-Control-Allow-Headers 不允许 Node Js 请求 header 字段 Access-Control-Allow-Origin

java - 谷歌应用引擎中的排序结果

go - 设置一个最大年龄的cookie;最大年龄丢失

google-app-engine - Appengine 搜索索引和命名空间

google-app-engine - 使用新的 Google+ 登录的 Appengine Cloud Endpoints

java - 如何在 BigQuery 数据访问日志中记录自定义信息?

python - Google App Engine 上的退回电子邮件

google-app-engine - 如何在 GAE Go 中对 slice 进行排序