2
我正在使用Google提供的Oauth2裝飾器。現在我只想通過使用GAE通過Oauth2向Google進行非常簡單的登錄。我在本地運行以進行測試,並已成功通過Google進行身份驗證;但是,在Google屏幕進行身份驗證之前,它始終向我顯示在本地主機上運行的本地登錄屏幕(// localhost:14080/_ah/login?continue = http%3A // localhost%3A14080 /)。我不知道爲什麼我會得到這個本地登錄屏幕,它似乎沒有任何影響後面的Google登錄屏幕。我想知道如何避免這個本地登錄屏幕?用於測試目的非常簡單的代碼:如何使用Oauth2和GAE繞過本地登錄屏幕
import webapp2
import jinja2
from apiclient.discovery import build
from google.appengine.api import users
from oauth2client.appengine import OAuth2Decorator
template_dir = os.path.join(os.path.dirname(__file__), "templates")
jinja_env = jinja2.Environment(loader = jinja2.FileSystemLoader(template_dir))
decorator = OAuth2Decorator(
client_id='the id given by google',
client_secret='the secret given by google',
scope='https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email')
class Handler(webapp2.RequestHandler):
def write(self, *a, **kw):
self.response.out.write(*a, **kw)
def render_str(self, template, **params):
t = jinja_env.get_template(template)
return t.render(params)
def render(self, template, **kw):
self.write(self.render_str(template,**kw))
class MainHandler(Handler):
@decorator.oauth_required
def get(self):
service = build('oauth2', 'v2', http=decorator.http())
request = service.userinfo().get().execute()
self.write(request["email"])
app = webapp2.WSGIApplication([
('/', MainHandler),
(decorator.callback_path, decorator.callback_handler())
], debug=True)
謝謝你的迴應。所以如果我明白了,如果我不使用裝飾器,而是對流進行編碼,則此用戶登錄不會出現在本地或生產空間中?另外,如果我在生產中使用裝飾器,這個登錄會在30天后至少第一次發生。從生產的角度來看,這種行爲似乎會阻止大多數使用裝飾器。 – C6Silver
我相信我已經能夠回答我自己的後續行動。部署到網絡不會給我這個額外的登錄框。它只顯示在本地主機上。謝謝格雷格您的信息! – C6Silver
要小心。正如Greg所說,如果您已經登錄,您將無法獲得登錄信息(即,有一個基於GAE Cookie的會話)。如果沒有會話,您將*提示輸入GAE登錄名。就我個人而言,我發現GAE登錄會妨礙我的工作,所以我選擇了「編寫自己的代碼」選項。 – pinoyyid