我正在使用这种工具组合创建一个 webapp。我正在通过以下方式向 App Engine 进行身份验证:
class googleLogin(webapp.RequestHandler):
def get(self):
callbackURL = 'http://%s/googleLoginCallback' % getHost()
#Create a client service
gdClient = gdata.docs.service.DocsService()
gdata.alt.appengine.run_on_appengine(gdClient)
gdClient.SetOAuthInputParameters(gdata.auth.OAuthSignatureMethod.HMAC_SHA1,
_GoogleConsumerKey,
consumer_secret=_GoogleConsumerSecret)
#Get a Request Token
requestToken = gdClient.FetchOAuthRequestToken(scopes=_GoogleDataScope,
extra_parameters={'xoauth_displayname': APP_NAME})
#Persist token secret
self.session = Session()
self.session[TOKENSECRETKEY] = requestToken.secret
gdClient.auto_set_current_token = True
gdClient.SetOAuthToken(requestToken)
authUrl = gdClient.GenerateOAuthAuthorizationURL(callback_url=callbackURL)
self.redirect(authUrl)
我在https://www.google.com/accounts/ManageDomain向 Google 验证了我的域,输入了目标 URL 并使用了给定的消费者密钥/秘密。例如,如果我的域是“juno.appspot.com”,我使用http://juno.appspot.com作为目标 url 路径前缀。
该过程正在运行;但是,Google 会在黄色安全框中向用户显示此消息:
“将您引导至此处的应用程序声称是 'xxxxxx'。我们无法验证此声明,因为该应用程序在您的计算机上运行,而不是在网站上运行。我们建议您拒绝访问,除非您信任该应用程序。”
我认为我不应该收到此错误,因为我的服务器正在获取请求令牌并创建授权 URL。有没有人对如何摆脱这个警告有任何见解?
Google 的域注册有一个上传证书的选项,但我不需要这样做,因为我正在使用 OAuth 和 HMAC_SHA1 签名方法。
此外,这并不重要,但我正在通过 iPhone 上的 UIWebView 完成所有这些工作。我特别尝试在服务器端进行所有身份验证,以避免暴露我的消费者密钥/秘密。
谢谢你的任何提示:)