Какой правильный URL-адрес для получения Auth Cookie из приложения на основе GAE - PullRequest
3 голосов
/ 13 октября 2010

У меня есть приложение для Android, которое я хочу подключить к серверу Google App Engine.Я могу получить токен авторизации из AccountManager.Кажется, что следующее, что я должен сделать, это обратиться к странице авторизации, чтобы получить cookie.Следуя инструкциям здесь: http://blog.notdot.net/2010/05/Authenticating-against-App-Engine-from-an-Android-app Я думаю, что мой URL должен быть:

https://MYAPP.appspot.com/_ah/login?continue=http://localhost/&auth=CrAZYl000ngToken

, но вместо перенаправления я получаю 500 ошибок сервера:

Error: Server Error

The server encountered an error and could not complete your request.
If the problem persists, please report your problem and mention this error message 
and the query that caused it.

Что с этим?По какому URL я должен идти?А может я что-то не так делаю?

1 Ответ

9 голосов
/ 14 октября 2010

ОК, URL не был неправильным в конце концов.Проблема заключалась в том, что токен истек.Я смог решить эту проблему путем аннулирования и повторного получения токена.

private class GetAuthTokenTask extends AsyncTask<Account, Object, String> {

    @Override
    protected String doInBackground(Account... accounts) {
        AccountManager manager = AccountManager.get(getApplicationContext());
        Account account = accounts[0];
        String token = this.buildToken(manager, account);
        manager.invalidateAuthToken(account.type, token);
        return this.buildToken(manager, account);
    }

    private String buildToken(AccountManager manager, Account account) {
        try {
            AccountManagerFuture<Bundle> future = manager.getAuthToken (account, "ah", false, null, null);
            Bundle bundle = future.getResult();
            return bundle.getString(AccountManager.KEY_AUTHTOKEN);
         } catch (OperationCanceledException e) {
                Log.w(TAG, e.getMessage());
         } catch (AuthenticatorException e) {
                Log.w(TAG, e.getMessage());
         } catch (IOException e) {
                Log.w(TAG, e.getMessage());
         }
         return null;
    }

    protected void onPostExecute(String authToken) {
        new GetCookieTask().execute(authToken);    
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...