2013-07-25 18 views
5

問題なくgoogleにサインインしました。私は、アクティビティの代わりにフラグメントを使用しています。 サムスン銀河でコードをテストすると、サインインシステムがアイドル状態になり、onConnectedメソッドが呼び出されません。 これは、利用規約が示された初めての場合です。 アドバイスはありますか?GoogleとAndroidでサインインし、最初のログインで問題が発生しました

@Override 
public void onActivityCreated(Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 
    initGoogle() 
} 


private void initGoogle() { 
    mPlusClient = new PlusClient.Builder(getActivity() , this , this).setVisibleActivities("http://schemas.google.com/AddActivity", "http://schemas.google.com/BuyActivity").build(); 

} 

public void connectWithPlus() { 
    launchProgressScreen(); 
    if(mPlusClient != null && !mPlusClient.isConnected()){ 
     mPlusClient.connect(); 
    }else{ 
     mPlusClient.clearDefaultAccount(); 
     mPlusClient.disconnect(); 
     mPlusClient.connect(); 
    } 
} 

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == REQUEST_CODE_RESOLVE_ERR) { 
    mConnectionResult = null; 
    connectWithPlus(); 
} 
} 
@Override 
public void onConnectionFailed(ConnectionResult result) { 
    if (result!= null && result.hasResolution()) { 
     try { 
      result.startResolutionForResult(getActivity(), REQUEST_CODE_RESOLVE_ERR); 
     } catch (SendIntentException e) { 
      connectWithPlus(); 
     } 
     mConnectionResult = result; 
    }else{ 
     onTaskResult(ProgressAlert.TASK_CANCEL_GOOGLE_LOGIN, null); 
    } 
} 
@Override 
public void onConnected(Bundle connectionHint) { 
    AsyncTask<Object, Void, String> task = new AsyncTask<Object, Void, String>() { 
     @Override 
     protected String doInBackground(Object... params) { 
      String token = null; 
      try { 
       token = GoogleAuthUtil.getToken(getActivity(), mPlusClient.getAccountName(),  
         "oauth2:" + Scopes.PLUS_LOGIN); 
      } catch (UserRecoverableAuthException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } catch (GoogleAuthException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
      return token; 
     } 

     @Override 
     protected void onPostExecute(String token){ 
      getAuthDelegate().setToken(token, SocialAccount.google); 
      getAuthDelegate().loginUsingGoogle(token, new HashMap<String, String>()); 
     } 
    }; 
    task.execute(); 
} 

@Override 
public void onDisconnected() { 
    Log.w("Google Login", "called disconnected"); 
} 

@Override 
public void onClick(View v) { 
    connectWithPlus(); 
} 
+0

は、あなたが代わりにバックonConnectionFailedなっていますか? – Lee

+0

いいえ、私は何も得ていません。しかし、不思議なことに、再び接続しようとすると、onConnectedが失敗することなく呼び出されます。 –

+0

対応するアクティビティコードの関連ビットを投稿できますか?アクティビティのライフサイクルでどのように結びついているかを見たいと思います。 – Lee

答えて

0

あなたはこのcatchブロックを処理する必要があります:

catch (UserRecoverableAuthException userRecoverableException) { 
    startActivity(userRecoverableException.getIntent()); 
} 
1

が、私は同じ問題に直面し、私は断片でメソッドをonResumeオーバーライドすることで、それを固定 は、ここに私のコードです。

有効な解決策であるかどうかはまだ分かりません。

おかげで、 ラーフル

関連する問題