Golang App-engine OAuth授权

时间:2013-12-18 09:08:38

标签: google-app-engine go google-oauth

我正在实施一个用Go编写的app-engine webapp,需要用户身份验证授权才能访问Google API上的某些用户数据。

我是否仍然需要使用goauth2和gorilla包来实现授权,或者“appengine”和“appengine / user”包中是否有一些功能可以为app-engine应用本地实现Oauthorization?我不介意继续使用goauth2,但如果有更好的方法......

2 个答案:

答案 0 :(得分:2)

您可以使用“appengine / user”软件包进行OAuth身份验证,但我必须自己实施授权。 对于使用“appengine / user”包进行OAuth身份验证,请参阅https://developers.google.com/appengine/docs/go/oauth/#Go_OAuth_and_App_Engine

答案 1 :(得分:2)

以下是OAuth for Go Overview网站上Google App Engine Docs的示例:

import (
    "fmt"
    "net/http"

    "appengine"
    "appengine/user"
)

func welcome(w http.ResponseWriter, r *http.Request) {
    c := appengine.NewContext(r)
    u, err := user.CurrentOAuth(c, "")
    if err != nil {
        http.Error(w, "OAuth Authorization header required", http.StatusUnauthorized)
        return
    }
    if !u.Admin {
        http.Error(w, "Admin login only", http.StatusUnauthorized)
        return
    }
    fmt.Fprintf(w, `Welcome, admin user %s!`, u)
}

看起来appengine/user具有函数user.CurrentOAuth()来提供身份验证功能。

对于授权,有一个使用OpenID Here的示例。

有一个警告;文档说明:

  

请注意,使用OAuth标识用户与标准用户身份验证模式完全正交。例如,如果用户仅通过OAuth进行身份验证,则使用login:required或login:admin标记的页面将拒绝加载。

Full Go GAE参考资料Here