2013-11-20 3 views
2

У меня есть приложение, в котором я пытаюсь получить токен аутентификации google. Время истекает по каждому запросу и не дает полезных сообщений в logcat. Я пытаюсь выяснить, не удалось ли мне правильно настроить облачную консоль или у меня возникли проблемы с моим кодом.googleauthutil.gettoken times out

Мой лексема класс запроса:

public class GetMyToken extends AsyncTask<String,Void,String>{ 

Context c; 
String TAG = "wnycmap issues"; 

public GetMyToken(Context c) { 
    this.c=c; 
} 

@Override 
protected String doInBackground(String...mEmail) { 

    String mScope = "oauth2:https://www.googleapis.com/auth/plus.me"; 
    String email = mEmail[0]; 
    System.out.println(c+email+mScope); 

    try { 
     return GoogleAuthUtil.getToken(c, email, mScope); 

     // System.out.println(token); 
    } catch (IOException transientEx) { 
     // Network or server error, try later 
     Log.e(TAG, transientEx.toString()); 

    } catch (UserRecoverableAuthException e) { 
     // Recover (with e.getIntent()) 
     Log.e(TAG, e.toString()); 
     // Intent recover = e.getIntent(); 

     //startActivityForResult(recover, REQUEST_CODE_TOKEN_AUTH); 
    } catch (GoogleAuthException authEx) { 

     Log.e(TAG, authEx.toString()); 




    } 
     return "nope"; 



    } 

Мой метод, который называет его:

private void authenticate() { 

    String accountEmail="asdf"; 
    String token = "null"; 
    AccountManager am = AccountManager.get(context); 
    Account[] accounts = am.getAccountsByType("com.google"); 

     if (accounts != null){ 
      Account account = accounts[0]; 
      accountEmail = account.name; 
      System.out.println(context); 
      try { 
       token=new GetMyToken(getApplicationContext()).execute(accountEmail).get(); 

      } catch (InterruptedException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 

      } catch (ExecutionException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 

      } 

     } 
} 

И мои соответствующие Manifest Настройки

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

+0

У меня есть несколько приложений в моем проекте с разными именами пакетов и тем же отладочным ключом. Является ли это источником моих проблем? – user17601

+0

Имена пакетов и ключи sha не были источником моих проблем. Я все еще не уверен, что это такое. – user17601

ответ

4

Это не полный ответ, но я не мог прокомментировать ваш пост, потому что сначала должен иметь 50 репутаций, чего у меня нет.


Я в настоящее время имеющий другую проблему с GoogleAuthUtil.getToken (...). Но когда я попробовал свой метод выполнения задачи, у меня была проблема с тайм-аутом, вероятно, такая же, как у вас.

Чтобы избежать проблемы тайм-аута, вы должны изменить строку, которая выполняет задачу От:

token=new GetMyToken(getApplicationContext()).execute(accountEmail).get(); 

To:

new GetMyToken(getApplicationContext()).execute(accountEmail); 

Независимо от того, что вы хотите сделать с маркером , либо:

  • сделать это в doInBackground method
  • или вызвать другой метод в doInBackground и передать токен этому методу.

doInBackground работает в фоновом режиме, и вы не должны висеть приложение, ожидающее его ответа. Это предотвратило проблему с таймаутом и отправило меня обратно к проблеме, с которой я уже сталкивался.

+0

Большое вам спасибо. Это именно то, что мне нужно было отследить в моем проекте. К сожалению, у меня нет достаточно высокого ранга, чтобы вы могли продвигать вас, но этот пост был огромной помощью. – user17601

Смежные вопросы