Ошибка аутентификации Google Tasks

Я начал программировать приложение для Android, которое реализует ListView и простую базу данных и предлагает возможность получать задачи из определенной учетной записи Google, а затем добавлять их в ListView.

Я использовал этот Учебное пособие и API задач для реализации кода, но он не работает, и в Интернете не так много других руководств. Вот фрагмент моей Start-Activity.

Я создал только одну учетную запись на своем телефоне, поэтому я пропустил диалоговое окно «Выбор учетных записей»:

googleAccountManager = new GoogleAccountManager(RememberMe.this);
Account[] accounts = googleAccountManager.getAccounts();
account = accounts[0];
googleAccountManager.manager.getAuthToken(account, AUTH_TOKEN_TYPE, null, this, new AccountManagerCallback<Bundle>() 
            {
                public void run(AccountManagerFuture<Bundle> future) 
                    {
                        try 
                            {
                                // If the user has authorized your application to use the tasks API
                                // a token is available.
                                String token = future.getResult().getString(AccountManager.KEY_AUTHTOKEN);
                                HttpTransport transport = AndroidHttp.newCompatibleTransport();
                                GoogleAccessProtectedResource googleAccessProtectedResource = new GoogleAccessProtectedResource(token);
                                service = new Tasks(transport, googleAccessProtectedResource, new JacksonFactory());
                                service.setKey("AIzaSyDAnO-UGa_zJnqftSVTHnvoHDp8Tfrmtko");
                                service.setApplicationName("Remember Me");
      
      

                                receivingTasks();
                                // Now you can use the Tasks API...
                                
                            } 
                        catch (OperationCanceledException e) 
                            {
                                // TODO: The user has denied you access to the API, you should handle that
                                Log.w(TAG, "synchronize - Catch OperationCanceled Exception");
                            } 
                        catch (Exception e) 
                            {
                                Log.w(TAG, "synchronize - Catch Exception e");
                            }
                    }
          }, null);

Вот метод "receiveTasks":

    public void receivingTasks()
    {
        try 
        {
            TaskLists taskLists = service.tasklists.list().execute();
            for (TaskList taskList : taskLists.getItems()) 
            {
                  Log.w(TAG, "" + taskList.getTitle());
            }
        }
        catch (IOException e) 
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

Все работает нормально - я получаю токен, есть сервис-объект и аккаунт-объект, но когда мы добираемся до

TaskLists taskLists = service.tasklists.list().execute();

он выдает исключение, и ничего не происходит, поэтому я предполагаю, что TaskLists - Object не инициализирован, но я понятия не имею, почему он не может ответить (LogCat).

Вот ЛогКэт:

11-29 15:57:58.848: W/DefaultRequestDirector(2878): Authentication error: Unable to respond to any of these challenges: {authsub=WWW-Authenticate: AuthSub realm="https://www.google.com/accounts/AuthSubRequest" allowed-scopes="https://www.googleapis.com/auth/tasks,https://www.googleapis.com/auth/tasks.readonly"}

11-29 15:57:58.858: W/System.err(2878): com.google.api.client.http.HttpResponseException: 401 Unauthorized

11-29 15:57:58.858: W/System.err(2878):     at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:669)

11-29 15:57:58.868: W/System.err(2878):     at com.google.api.services.tasks.Tasks$RemoteRequest.execute(Tasks.java:1571)

11-29 15:57:58.868: W/System.err(2878):     at com.google.api.services.tasks.Tasks$Tasklists$List.executeUnparsed(Tasks.java:1277)

11-29 15:57:58.868: W/System.err(2878):     at com.google.api.services.tasks.Tasks$Tasklists$List.execute(Tasks.java:1262)

Мне также интересно, в чем разница между учебником и API, было бы здорово, если бы кто-нибудь мог мне помочь, потому что я не знаю, где еще я мог бы найти помощь по этой теме. Большое спасибо.


person vein    schedule 29.11.2011    source источник


Ответы (1)


Для всех, у кого возникла такая же проблема, попробуйте сохранить токен в общих настройках и аннулировать его каждый раз при запуске приложения и создавать новый из-за ошибки менеджера учетных записей; моя проблема может быть решена следующим образом: см. это: https://groups.google.com/group/google-tasks-api/browse_thread/thread/6d65116019baf122/81293191c46ebdc6?lnk=gst&q=401#81293191c46ebdc6

person vein    schedule 08.12.2011