Android App注册/授权

时间:2014-02-04 21:05:09

标签: android google-app-engine google-oauth

我对android很新,最近开始构建一个需要

的应用程序
  • 使用Google ID注册。
  • 与后端服务器的持续交互。

对于注册,我想知道是否可以在具有OAUTH2身份验证的Google App Engine上安装python webapp。

如果在webview中打开此页面,则应将令牌返回给GAE(如果我在这里错了,请更正我,因为我不确定令牌不会直接转到应用程序)。

然后在后端再生一个令牌(新生成的)并使用这个新令牌更新用户表并将其传递给应用程序。

应用程序发出的每个后续请求都将使用此令牌引用。

这是可行的还是有更好的标准方法(我不想使用已存储在手机中的登录信息)?

此外,我如何从谷歌帐户(姓名,电子邮件)获取信息,如Facebook有访问图表是否有谷歌对应?

1 个答案:

答案 0 :(得分:0)

据我了解,您使用WebView实现了Android应用。这意味着应用程序与内置Android Web浏览器的方式与服务器交互。因此,您无需在身份验证方面为Android应用添加任何特殊内容。

内置用户服务

在GAE中,您可以获得对三种不同类型身份验证的开箱即用支持,其中所有身份验证的设计方式都是您的应用不存储用户凭据,而是依赖身份提供商的用户身份验证: / p>

  • Google帐户(例如jonny@gmail.com)
  • Google Apps域(例如,在Google Apps中托管的jonny@mydomain.com)
  • 或联合登录(例如,a.k.a. OpenID,例如Google,Yahoo!),将由使用oAuth2登录(OpenID Connect)取代

这三种类型都允许您的应用只访问用户的非常基本的信息。足以将GAE应用的返回用户与其数据,电子邮件地址或唯一ID匹配,但就是这样。有关更多信息,请参阅下文(oAuth2使用者)。

在appengine控制台中,您可以在页面管理>页面中选择首选的身份验证类型。应用程序设置。

无论您使用哪种类型,在Python代码中都可以使用GAE的Users service来处理用户的身份验证。基本上,你只需写下:

from google.appengine.api import users

user = users.get_current_user()
if not user:
    # The user is not signed in.
else:
    print "Hello, %s!" % user.nickname()

在开发服务器上,系统会提示您输入虚拟登录页面,以查找需要登录或管理员登录的请求。在实时环境中,它们将由具有真实登录页面流的GAE替换。如果要向用户显示自定义登录页面,还有文档中链接的文章与HTML / JS示例,例如User Experience summary for Federated Login

oAuth2用于使用Google进行身份验证和授权

关于oAuth2,使用内置身份验证可以很容易地集成内置oAuth service,因此您的GAE应用程序成为服务提供商,即GAE应用程序的用户可以与任何第三方应用程序共享数据或通过一些简单的API网站。您还可以让GAE应用使用用户存储在其他地方的数据(例如Google),并希望与您的GAE app (consumer)共享。如果您对访问Google服务中的用户数据特别感兴趣,可以使用good overview

自定义用户管理

最后,您可以实现自己的身份验证机制,而不是依赖(并依赖于)GAE功能。例如,您可以实施custom user management based on webapp2。这意味着您可以控制用户帐户和凭据,但除了最终的安全风险之外,缺点是集成Google Cloud Endpoints等服务和API可能非常困难和棘手。

相关问题