自定义域应用请求访问Google帐户的权限

时间:2011-10-14 09:55:38

标签: google-app-engine authentication google-account

我在这里指的是您在使用Google帐户登录GAE应用后重定向的页面,该帐户会要求您允许访问您的Google帐户。

将此与自定义域和https相关联,您就会遇到我的问题。

很抱歉。我到处搜索。没找到任何东西。不确定这是OAuth问题(不要考虑)。

我的配置:

  • 开发了myapp.appspot.com
  • 将自定义域myapp.mydomain.com配置为指向myapp
  • myapp正在使用GAE登录服务
  • 需要来自自定义域(!)的https帖子,解决方法如下:
  • GAE登录服务适用于 http://myapp.mydomain.com 处理程序和 https://myapp.appspot.com/someservice 处理程序

工作流程为:

  1. 用户尚未通过身份验证
  2. 用户浏览 http://myapp.mydomain.com (不是ssl)
  3. 用户被重定向到Google帐户登录页面
  4. 用户登录
  5. 用户被重定向到上述页面:myapp请求访问用户的Google帐户的权限
  6. 用户授予他的许可
  7. 用户在 - 确定
  8. 现在出现问题:
  9. 用户提交 https://myapp.appspot.com/someservice (以便数据传输ssl),这是loginrequired decorated
  10. 登录正常,用户不会再次被重定向到登录页面,
    • 我认为这是因为谷歌登录是跨应用程序(如果用户已经登录到Gmail,同样应该appen),
  11. 但现在 https://myapp.appspot.com/ 再次请求访问用户的Google帐户的权限 - 这就是问题
  12. 系统会提示用户 TWICE 授予myapp访问其帐户的权限:

    • 一次浏览 http://myapp.mydomain.com
    • 和另一个人提交数据到 https://myapp.appspot.com/someservice

    我的用户也不喜欢它和我!

    我怀疑这是因为用户回答(允许或不回复)是相对于应用程序的URL保存的服务器端 而不是关于应用程序的其他一些唯一ID。

    但我不知道如何解决它或至少解决它。

    感谢您耐心等待阅读。

    任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

为用户会话发布的cookie是每域和每协议。因此,同一会话将无法在appspot应用和您的自定义域上运行。这不是App Engine限制 - 它只是HTTP的工作方式。

目前,最好的解决方案是将表单本身放在HTTPS上(无论如何这通常是一个好主意)。