我在这里指的是您在使用Google帐户登录GAE应用程序后重定向的页面,该帐户会要求您允许访问您的Google帐户 .
把它与自定义域和https放在一起,你就会遇到我的问题 .
抱歉长度 . 我到处搜索 . 没找到任何东西 . 不确定这是OAuth问题(不要考虑) .
我的配置:
-
开发了myapp.appspot.com
-
配置自定义域myapp.mydomain.com指向myapp
-
myapp正在使用GAE登录服务
-
需要来自自定义域(!)的https帖子,解决方法如下:
从http://myapp.mydomain.com在HTTP中加载 -
页面
-
一些提交的HTTPS URL在页面中是硬编码的,如https://myapp.appspot.com/someservice
-
同一域策略通过http头解析服务器端
-
GAE登录服务适用于http://myapp.mydomain.com处理程序和https://myapp.appspot.com/someservice处理程序
工作流程是:
-
用户尚未通过身份验证
-
用户浏览http://myapp.mydomain.com(不是ssl)
-
用户被重定向到Google帐户登录页面
-
用户登录
-
用户被重定向到上述页面:myapp请求访问用户的Google帐户的权限
-
用户授予他的许可
-
用户在 - 好的
-
Now comes the problem:
-
用户提交到https://myapp.appspot.com/someservice(以便数据传输ssl),这是loginrequired装饰
-
登录正常,用户不会再次被重定向到登录页面,
-
我认为这是因为谷歌登录是跨应用程序(如果用户已经登录到Gmail,同样应该appen)
-
但现在https://myapp.appspot.com/是 again 请求访问用户的Google帐户的权限 - 这就是问题所在
系统会提示用户 TWICE 授予myapp访问其帐户的权限:
-
一次浏览http://myapp.mydomain.com时
-
和另一个他向https://myapp.appspot.com/someservice提交数据时
我的用户也不喜欢它和我!
我怀疑这是因为用户回答(允许或不回复)是相对于应用程序的URL保存服务器端而不是相对于应用程序的其他一些唯一ID .
但我不知道如何解决它或至少解决它 .
感谢您耐心等待阅读 .
任何帮助,将不胜感激 .
1 回答
为用户会话发出的cookie是每域和每协议 . 因此,同一会话将无法在appspot应用和您的自定义域上运行 . 这不是App Engine的限制 - 它只是HTTP的工作原理 .
目前,最好的解决方案是将表单本身放在HTTPS上(无论如何这通常是一个好主意) .