使用Android AccountManager通过UserService进行AppEngine登录

时间:2012-12-14 22:27:32

标签: android google-app-engine oauth

我正在使用Google AppEngine,我正在使用他们的UserService类来处理用户帐户并登录。我不需要访问有关其帐户的任何信息 - 我只是使用它来区分用户。

现在网站主要只是一个后端。我正在使用Android应用程序作为前端。我知道您可以使用AccountManager访问设备上的Google用户帐户。这绝对是让用户登录的最安全的方式。而且我还有很多工作要做。

我遇到的问题是将登录信息从Android应用程序传递到AppEngine网站。根据我的准备,我应该使用OAuth,并且我看到了使用Google API的演练here,但我不需要访问API,只需登录。我已经能够在应用程序中获取身份验证令牌,但我不知道如何将其传递到网站,或者如果这是正确的方向。我是否应该在服务器上使用特定的OAuth登录,例如this guy

非常感谢任何帮助!

以下是相关代码:

服务器(GAE):

UserService userService = UserServiceFactory.getUserService();
User user = userService.getCurrentUser();

if (user == null) {
    resp.sendRedirect(userService.createLoginURL(req.getRequestURI()));
    return;
} 

客户端(Android):

AccountManager am = AccountManager.get(this);
Account[] accounts = am.getAccountsByType("com.google");

Bundle options = new Bundle();

am.getAuthToken(
        accounts[0],                     // Account retrieved using getAccountsByType()
        "Manage your tasks",            // Auth scope
        options,                        // Authenticator-specific options
        this,                           // Your activity
        new OnTokenAcquired(),          // Callback called when a token is successfully acquired
        new Handler(new OnError()));
//Now what!?

1 个答案:

答案 0 :(得分:3)

blog post完全涵盖了我需要的内容。

对于两个备用(在我看来不太理想)的解决方案,请查看此主题:Webservice credentials - OpenID/Android AccountManager?