我有一个用Python / Google Appengine / WebApp2框架编写的Web应用程序 . Web应用程序具有本机(自定义)身份验证 . 用户ID /密码由应用程序管理(并且不使用Google帐户) .
Web应用程序也需要扩展到Mobile客户端 . 所以我正在开发一个原生的Android客户端应用程序,并尝试与Google Appengine集成 .
对于从Android客户端到Google应用引擎的身份验证,我试图通过使用Google Cloud Endpoints来保持简单 . 你能否建议我的方法是否正确?
-
使用Google应用引擎控制台生成白名单客户端ID(适用于Android,Web和最终的IOS) .
-
使用白色客户端列表(Web,Android和IOS)创建Google Cloud Endpoint后端Api(在Python中),如此处所示 - https://cloud.google.com/appengine/docs/python/endpoints/getstarted/backend/
-
创建后端库 .
-
将库导入Android客户端
我对上述情况的期望如下 -
-
使用Google Cloud Endpoints Api(来自Android客户端)的最终用户将使用Google App引擎对Android客户端进行身份验证 .
-
作为Client-GAE安全认证的一部分,我可以将用户login-id作为API调用的参数传递,并获取该特定用户标识的数据/发布数据 .
-
我正在使用移动客户端中的本地存储为最终用户存储userid(而不是密码) .
如果我的方法是正确的,你能否建议一下?我有意避免使用从Android客户端到GAE的基于Google帐户的身份验证 .
1 回答
为了通过Google Cloud Endpoints将App Engine用户实例注入您的API方法,您需要在Android应用中使用Google帐户 . Android代码中的服务构建器采用GoogleAccountCredential .
您仍然可以支持自己的用户ID和密码,但如果这样做,则无法利用用户注入 .
[编辑]
如果您不打算在Android应用中使用Google帐户,请忘记SHA1和API密钥 . 你将不得不推出自己的身份验证 . 这取决于您如何执行此操作,但您可以使用带有用户名和密码并返回令牌的API调用启动会话 . 例如,所有其他API调用可能会获取该标记并在返回结果之前检查其是否有效 .