- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
下面的代码在本地服务器上完美运行,但是当适应谷歌应用引擎时(func main 更改为 init 并且包名称从 main 设置为测试应用程序)oauth2callback 请求不再工作,下面的请求被重定向到 oauth2error 处理程序.
http://testapp.com/oauth2callback?code=OAUTHRESPONSEFROMFACEBOOK&state=%2F
package testapp
import (
"github.com/go-martini/martini"
goauth2 "github.com/golang/oauth2"
"github.com/martini-contrib/oauth2"
"github.com/martini-contrib/sessions"
"net/http"
)
func init() {
m := martini.Classic()
m.Use(sessions.Sessions("my_session", sessions.NewCookieStore([]byte("secret123"))))
m.Use(oauth2.Facebook(
goauth2.Client("AppID", "AppSecret"),
goauth2.RedirectURL("http://testapp.com/oauth2callback"),
goauth2.Scope("email,user_birthday,user_friends,publish_actions,user_location,user_photos"),
))
// Tokens are injected to the handlers
m.Get("/", func(tokens oauth2.Tokens) string {
if tokens.Expired() {
return "not logged in, or the access token is expired"
}
return "logged in"
})
// Routes that require a logged in user
// can be protected with oauth2.LoginRequired handler.
// If the user is not authenticated, they will be
// redirected to the login path.
m.Get("/restrict", oauth2.LoginRequired, func(tokens oauth2.Tokens) string {
return tokens.Access()
})
http.Handle("/", m)
}
最佳答案
我的猜测是您需要将 App Engine 上下文注入(inject)到 Get 方法中。
根据 this issue在 Go Martini 仓库中,您可以执行以下操作:
func AppEngine(m martini.Context, r *http.Request) {
m.MapTo(appengine.NewContext(r), (*appengine.Context)(nil))
}
func init() {
m := martini.Classic()
m.Use(AppEngine)
// ...
m.Get("/", func(tokens oauth2.Tokens, c appengine.Context) string {
if tokens.Expired() {
return "not logged in, or the access token is expired"
}
return "logged in"
})
m.Get("/restrict", oauth2.LoginRequired, func(tokens oauth2.Tokens, c appengine.Context) string {
return tokens.Access()
})
}
关于google-app-engine - Martini oauth2callback适配GAE后重定向到oauth2error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27459345/
我正在尝试从我的测试文件中拆分我的应用程序文件。它看起来像这样: main.go views/ layouts/ layout.html spec/ main_test.go main
我尝试用马提尼渲染我的页面布局.html ... ... {{ yield }} ... index.html Hello 渲染选项: m.Use(r
我正在使用 martini、golang 和 postgresql 构建一个社交网络类型的服务器作为练习,以帮助培养我在这三方面的技能。我想不明白的几个关键问题是如何将用户表中的主键插入到用户信息表的
我正在尝试定义代码块,如果它们被定义,这些代码块将被注入(inject)到基本模板中。我不想将一个页面上需要的所有脚本都包含到不需要它的另一个页面上。 我正在使用: "github.com/go-ma
我需要设置位于“公共(public)”文件夹中的默认页面“index.html”。我如何在 Martini 框架中做到这一点? 我试过了,但是没用: func main() { m := ma
如何将 martini 日志路径设置为某个随机文件。它现在显示在控制台中。 m := martini.Classic() 感谢帮助 最佳答案 将新记录器附加到 Martini: f, err := o
我正在尝试学习来自 Rails 的马提尼酒。马提尼世界中的数据库迁移使用什么? 最佳答案 马提尼中没有这样的东西。它只是编写 Web 服务的 helper 。如果您想要数据库迁移或根本不需要数据库,请
我用 Martini 编写了我的第一个 Go 应用程序。我有带命名参数的路由: m := martini.Classic() staticOptions := martini.StaticOption
我目前正在使用 golang 和 Martini 等,并希望动态地提供一些操作/生成的图像。这是一个最小的例子: package main import ( "github.com/codeg
我构建了一个网络爬虫,提供一些有关其发现的 http 信息。爬虫作为 go routine 运行,martini 运行 web 服务器。过了一会儿,我开始得到 2014/08/01 10:23:51
我正在尝试在 Go 中将 Auth0 与 Martini 一起使用。我正在使用他们的 examples但无论我尝试什么,我似乎都无法让它工作。 这是我的代码: package main import
我正在玩 Martini,出于某种原因我无法让 contrib 绑定(bind)包工作。 我的结构没有绑定(bind)值。我已将代码缩减为最简单的形式,但它仍然无法正常工作。 谁能看出我做错了什么
当我试图从我的数据库中获取 JSON 数据时,我得到了这个: {“时间”:“14 年 12 月 11 日 13:42:21”,“:”:“Привет” {"time":"13:42:25 11.12.
我是 Go 的新手,想知道是否有关于如何测试 Go Martini 的处理程序代码的示例的约定/标准? 提前致谢! 最佳答案 martini-contrib 库有很多值得一看的现有代码:https:/
我正在尝试使用 vk auth与 martini .但是编译时出错: /goPath/vkAuthTry2.go:38: undefined: YourRedirectFunc 问题是如何定义Your
下面的代码在本地服务器上完美运行,但是当适应谷歌应用引擎时(func main 更改为 init 并且包名称从 main 设置为测试应用程序)oauth2callback 请求不再工作,下面的请求被重
我是 GO 和马提尼套餐的新手。我现在想做的是使用 AJAX 提交表单。问题是 go 返回整个 html 文件。我不知道是否有错误,因为没有错误返回。我需要测试我的表单是否成功提交数据,因为我将使用它
我在使用这个语句时遇到问题 m.Post(Model, binding.Form(Wish), func(wish Wish, r render.Render, db *mgo.Database)
我想给自己发送电子邮件,但页面 http://localhost:3000/panic 出现错误包含错误 url - /panic 在我们的例子中。但是我不知道如何从 RecoverWrap 方法中的
这没有太多背景,因为它确实是一种应该起作用的情况,但它却不起作用。 我正在使用马提尼框架。在一个处理程序中,我正在使用这个: session.Set("deployed", "true") r.Red
我是一名优秀的程序员,十分优秀!