【问题标题】:GoogleAuthUtil.getToken causing android app crashGoogleAuthUtil.getToken 导致 android 应用程序崩溃
【发布时间】:2013-12-02 05:03:21
【问题描述】:

我正在尝试使用 GoogleAuthUtil.getToken 生成可用于登录其他服务的令牌。当我尝试使用此方法时,我的应用程序“挂起”并停止响应。最终我的手机吐出了一些 IO 错误消息。我没有从服务器收到任何结果。

电子邮件地址是我的电子邮件地址,格式为 myname@gmail.com,我已将服务器地址用于我的范围,但现在我只是尝试使用最简单的字符串来获得我能得到的结果开始工作。

public  class GetTokens extends AsyncTask<String,Void,String>{
 Context c;
 String TAG = "wnycmap issues";

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

@Override
protected String doInBackground(String...mEmail) {
    String token = "null";
    String mScope = "oauth2:https://www.googleapis.com/auth/plus.me";
    String email = mEmail[0];
    System.out.println(c+email+mScope);
    try {
        token = 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 token;

错误:

 E/SnepServer(32677): IO error
 E/SnepServer(32677): java.io.IOException
 E/SnepServer(32677):   at com.android.nfc.dhimpl.NativeLlcpServiceSocket.accept(NativeLlcpServiceSocket.java:42)
 E/SnepServer(32677):   at com.android.nfc.snep.SnepServer$ServerThread.run(SnepServer.java:213)
 D/NdefPushServer(32677): stop, thread = Thread[Thread-8152,5,main]
 D/NdefPushServer(32677): shuting down server thread
 E/HandoverServer(32677): IO error
 E/HandoverServer(32677): java.io.IOException
 E/HandoverServer(32677):   at com.android.nfc.dhimpl.NativeLlcpServiceSocket.accept(NativeLlcpServiceSocket.java:42)
 E/HandoverServer(32677):   at com.android.nfc.handover.HandoverServer$ServerThread.run(HandoverServer.java:108)
 E/NdefPushServer(32677): IO error
 E/NdefPushServer(32677): java.io.IOException
 E/NdefPushServer(32677):   at com.android.nfc.dhimpl.NativeLlcpServiceSocket.accept(NativeLlcpServiceSocket.java:42)
 E/NdefPushServer(32677):   at com.android.nfc.ndefpush.NdefPushServer$ServerThread.run(NdefPushServer.java:154)

以及我用来调用 AsyncTask 的代码

private void authenticate() {
      String accountEmail="asdf";
      String authToken = "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 {
                authToken=new GetTokens(context).execute(accountEmail).get();
          } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
          } catch (ExecutionException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
          } 
      }
}    

【问题讨论】:

  • 在旁注中,我似乎根本无法捕捉到这些错误。我只是尝试使用 catch (Exception e) 运行我的代码,但它仍然以相同的方式执行。
  • 每次尝试使用 googleAuthUtil 时都会收到以下警告

标签: java android authentication android-asynctask oauth-2.0


【解决方案1】:

尝试一些事情,

  1. 捕获 GooglePlayServicesAvailabilityException
  2. 检查您是否在 AndroidManifest.xml 的应用程序元素中放置了正确的元数据 &lt;meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" /&gt;
  3. 捕获 RuntimeException 作为挖掘崩溃根源的最后手段。

【讨论】:

    猜你喜欢
    • 2014-05-08
    • 2014-09-09
    • 1970-01-01
    • 1970-01-01
    • 2022-10-05
    • 2020-11-16
    • 2018-01-29
    • 2018-09-23
    • 1970-01-01
    相关资源
    最近更新 更多