1
我正在開發一個應用程序,其中包括通過Google進行身份驗證以從其Google帳戶抓取用戶的個人資料圖片和名稱。目前,我只是試圖打印出谷歌收到的令牌作爲調試措施,以驗證它是否有效。但是,我始終有一個空令牌(它不會出現在所有設置),給了以下錯誤:空指針異常 - Android中Google帳戶的GoogleAuthUtil身份驗證
java.lang.NullPointerException
com.google.android.gms.auth.GoogleAuthUtil.getToken(Unknown Source)
com.sp.norsesquare.froyo.NorseSquare$LoginAsyncTask.doInBackground(NS.java:465)
com.sp.norsesquare.froyo.NorseSquare$LoginAsyncTask.doInBackground(NS.java:1)
android.os.AsyncTask$2.call(AsyncTask.java:287)
java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
java.util.concurrent.FutureTask.run(FutureTask.java:137)
android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
java.lang.Thread.run(Thread.java:856)
我使用的是定製的AsyncTask類來獲取數據,並將其返回到主活動,這被定義爲主要活動中的公共課程。
public class LoginAsyncTask extends AsyncTask<String, Void, String>
{
NS ns;
String email;
String mScope;
String authToken;
Context context;
Bundle bundle;
public LoginAsyncTask(String e)
{
email = e;
bundle = new Bundle();
}
protected void onPreExecute()
{
Log.i("BEGIN","Getting authtoken");
}
protected String doInBackground(String... args)
{
try
{
authToken = GoogleAuthUtil.getToken(context, email, "oauth2:"+"https://www.googleapis.com/auth/userinfo.profile", bundle);
Log.i("MESSAGEGEGEGE","YOUR TOKEN = "+authToken);
}
catch (UserRecoverableAuthException recoverableException) {
Toast.makeText(context, "UserRecoverableException Occurred", Toast.LENGTH_LONG).show();
Log.e("GOOGLEAUTH","UserRecoverableException Triggered");
Intent recoveryIntent = recoverableException.getIntent();
} catch (GoogleAuthException authEx) {
Log.e("MESSAAGEGEG", "Unrecoverable authentication exception: " + authEx.getMessage(), authEx);
} catch (IOException ioEx) {
Log.i("MESSAGEGEGE", "transient error encountered: " + ioEx.getMessage());
}
catch (Exception e) {
e.printStackTrace();
}
return authToken;
}
protected void onProgressUpdate(Integer... progress)
{
Log.i("PROGRESS","Getting somewhere");
}
protected void onPostExecute(String result)
{
Log.i("GOOGLEAUTH", "Returning Received Google Token");
googleAuthToken = result;
//This is a variable defined in the main activity
}
}
我有點失落,因爲這是來自哪裏,並且找不到任何地方。我會非常感謝你的幫助,謝謝!
看起來'Context context'爲空。 – 2013-04-10 12:46:19
從何時起,GoogleAuthUtil.getToken()方法開始針對未在設備上註冊的電子郵件拋出帶有「BadUsername」消息的GoogleAuthException,而不是之前發生的帶有消息「Non existing account'email_address'」的異常IllegalArgumentException? http://developer.android.com/reference/com/google/android/gms/auth/GoogleAuthUtil.html#getToken(android.content.Context,java.lang.String,java.lang.String) – toobsco42 2013-11-06 02:32:35
This used爲我工作,但只是在幾天前它停止工作,現在它引發此錯誤com.google.android.gms.auth.GoogleAuthException:未知。任何想法爲什麼?我的示波器有問題嗎? https://gist.github.com/lawloretienne/7351151 – toobsco42 2013-11-07 17:02:01