如何从Android客户端注入谷歌应用引擎'用户'?

时间:2016-04-19 14:08:04

标签: android google-app-engine google-cloud-endpoints google-authentication

比如说我的一个端点从备份中获取(用户用户)。如何使用谷歌身份验证从我的Android客户端注入这个“用户”到后端?

1 个答案:

答案 0 :(得分:0)

看看GAE注入类型:

https://cloud.google.com/appengine/docs/java/endpoints/paramreturn_types#injected_types

如果您使用的是Google身份验证,则会自动将用户注入Endpoints API方法,然后您可以执行检查用户是否存在的事情(例如,在您的数据存储区中),将用户保存到数据存储区等等。

它的工作方式是在您的Android客户端中,系统会提示用户通过oAuth2.0登录他们的Google帐户,一旦他们这样做,GoogleAccountCredential对象就会传递到构建器中。

以下是取自docs的示例代码:

// Inside your Activity class onCreate method
settings = getSharedPreferences("TicTacToeSample", 0);
credential = GoogleAccountCredential.usingAudience(this,
    "server:client_id:1-web-app.apps.googleusercontent.com");
setSelectedAccountName(settings.getString(PREF_ACCOUNT_NAME, null));

Tictactoe.Builder builder = new Tictactoe.Builder(
    AndroidHttp.newCompatibleTransport(), new GsonFactory(),
    credential);
service = builder.build();

if (credential.getSelectedAccountName() != null) {
  // Already signed in, begin app!
} else {
  // Not signed in, show login window or request an account.
}

// setSelectedAccountName definition
private void setSelectedAccountName(String accountName) {
  SharedPreferences.Editor editor = settings.edit();
  editor.putString(PREF_ACCOUNT_NAME, accountName);
  editor.commit();
  credential.setSelectedAccountName(accountName);
  this.accountName = accountName;
}

基本上发生了一些魔术,Cloud Endpoints现在可以将登录的用户注入您的Endpoints方法。并且您可以检查它是否为空(如果为null,auth不好,则抛出未经授权的错误),获取该用户的电子邮件等。

希望能让你开始。