如何让AccountManager(authtoken)和OpenID一起工作(没有AppEngine)?
我正在制作一个 Android 应用程序,它应该能够从网络服务(不属于 GAE 的一部分)获取数据。用户可以使用 OpenId 通过浏览器登录 Web 服务(仅允许 Google 帐户)。
AccountManager 可以给我 authtoken。我可以将此 authtoken 与用户的 google 帐户名(电子邮件)一起保存在我的服务器上,然后使用此帐户名将他的 openid 登录与应用程序注册连接起来。
但这并不能解决任何问题,因为我无法根据用户的 OpenID 信息验证此令牌...或者我可以吗?我想我可以使用用户的身份验证令牌“以某种方式”将他的 Android 帐户链接到网络帐户。
这看起来越来越像是一种错误的处理方式,但我不想在 SharedPreferences 中保存用户 Google 的用户名/密码并使用这些数据进行登录。
有什么创意吗?谢谢
I am making an Android app which should be able to get data from a web service (which is not part of GAE). Users are able to log in to web service through their browser by using OpenId (only Google accounts are allowed).
AccountManager can give me authtoken. I could save this authtoken on my server, together with user's google account name (email) and then use this account name to connect his openid login with app registration.
But this does not solve anything because I have no way to verify this token against user's OpenID information... Or do I? I thought I could use user's authtoken to "somehow" link his android account to the web account.
This looks more and more like a wrong way to handle this but I do not want to save users Google's username/password in SharedPreferences and use these data for login.
Any creative ideas? Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我为我的应用程序推送操作解决了这个问题 - http://www.pushactions.com。对于我的解决方案,我最终使用了 GAE,但只是为了验证令牌。实际的 Push Actions 应用程序托管在 Heroku 上。这是我的流程:
运行推送操作的地址
Heroku
据我所知,这是验证 AccountManager 生成的令牌是否有效的唯一方法。确实,它确实需要使用 GAE,但仅适用于整个应用程序的一小部分。我的 GAE 服务最终就像 1 个类和几行代码,所以并不多。您可以将 GAE 部分视为 google 提供的用于验证令牌的服务。
以下是我的 GAE 服务的代码:
logged_in.jsp:
logged_out.jsp:
I solved this exact issue for my app Push Actions - http://www.pushactions.com. For my solution, I did end up using GAE, but only to authenticate the token. The actual Push Actions app is hosted on Heroku. Here's my flow:
address to Push Actions running on
Heroku
As far as I know, this is the ONLY way to verify if a token generated by AccountManager is valid. True, it does require the use of GAE, but only for one small piece of your overall app. My GAE service ended up being like 1 class and a few lines of code, so it isn't much. You can think of the GAE piece as a service provided by google for authenticating tokens.
Here is the code for my GAE service:
logged_in.jsp:
logged_out.jsp: