首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为AppEngine提供程序更正OAuth2 Golang包

为AppEngine提供程序更正OAuth2 Golang包
EN

Stack Overflow用户
提问于 2016-06-19 19:25:19
回答 1查看 184关注 0票数 1

使用OAuth的正确方法是什么

如果我使用来自context.Contextgolang.org/x/net/context,错误是:

代码语言:javascript
运行
复制
"golang.org/x/net/context".Context does not implement "appengine".Context (missing Call method)

但是,如果我使用来自appengine.Contextappengine (SDK),错误是:

代码语言:javascript
运行
复制
cannot use oauth2.NewClient(c) (type *http.Client) as type "golang.org/x/net/context".Context in argument to provider.Client:
*http.Client does not implement "golang.org/x/net/context".Context (missing Deadline method)

如果我使用oauth2.NoContext,运行时错误是

代码语言:javascript
运行
复制
Post https://accounts.google.com/o/oauth2/token: not an App Engine context

两种测试都使用Go 1.4和1.7b3

使用这段代码:

代码语言:javascript
运行
复制
func Public_YoutubeOauth(w http.ResponseWriter, r *http.Request) {
    c := appengine.NewContext(r)
    provider, csrf := getOAuth(r)
    gets, err := url.ParseQuery(r.URL.RawQuery)
    if RenderHtmlIfError(w,err) {
        return
    }
    if csrf != gets.Get(`state`) {
        RenderHtmlError(w,`incorrect CSRF state`)
        return
    }
    code := gets.Get(`code`)
    token, err := provider.Exchange(c, code) // error here
    if RenderHtmlIfError(w,err) {
        return
    }
    RenderHtml(w,`page`,map[string]interface{`token`:token})
}

provider是:

代码语言:javascript
运行
复制
&oauth2.Config{
        ClientID:     `aaa`,
        ClientSecret: `bbb`,
        RedirectURL:  url + `/foo/youtube_oauth`,
        Scopes: []string{
            `openid`,
            `email`,
            `profile`,
            `https://www.googleapis.com/auth/youtube`,
        },
        Endpoint: google.Endpoint,
    }

解决这个问题的正确方法是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-19 19:36:52

解决方案:

  1. 将所有"appengine导入更改为"google.golang.org/appengine
  2. 保持使用context.Context (来自golang.org/x/net/context)而不是appengine.Context
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37910994

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档