Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java GoogleAuthUtil.getToken导致android应用程序崩溃_Java_Android_Authentication_Android Asynctask_Oauth 2.0 - Fatal编程技术网

Java GoogleAuthUtil.getToken导致android应用程序崩溃

Java GoogleAuthUtil.getToken导致android应用程序崩溃,java,android,authentication,android-asynctask,oauth-2.0,Java,Android,Authentication,Android Asynctask,Oauth 2.0,我正在尝试使用GoogleAuthUtil.getToken生成一个令牌,可以用来登录到另一个服务。当我尝试使用此方法时,我的应用程序“挂起”并停止响应。最终我的手机会发出一些IO错误信息。我没有收到来自服务器的任何结果 电子邮件地址是我的电子邮件地址,格式为myname@gmail.com,我已经在我的作用域中使用了服务器地址,但现在我只是尝试使用尽可能简单的字符串来获得一个可以开始使用的结果 public class GetTokens extends AsyncTask<Strin

我正在尝试使用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;
以及我用来调用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();
          } 
      }
}    
尝试一些事情

  • 捕获GooglePlayServicesAvailabilityException
  • 检查是否已在AndroidManifest.xml的应用程序元素中放置了正确的元数据
  • 将捕获RuntimeException作为挖掘崩溃源的最后手段

  • 顺便说一句,我似乎根本听不懂这些错误。我只是尝试用catch(异常e)运行代码,但它的执行方式仍然相同
    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();
              } 
          }
    }