1

次のリンクcalling from androidadd autherisation backendを使用してプロジェクトをセットアップしました。私は自分の資格とSHA1鍵を二重にチェックしました。auth2.0でサービスオブジェクトを使用してGoogleエンドポイントに接続できません。例外:NetworkError

しかし、私はまだこれは以下の私のコードで、次のエラーに

java.io.IOException: NetworkError 
    at com.google.android.gms.auth.zzd$1.zzbr(Unknown Source) 
    at com.google.android.gms.auth.zzd$1.zzbs(Unknown Source) 
    at com.google.android.gms.auth.zzd.zza(Unknown Source) 
    at com.google.android.gms.auth.zzd.zzc(Unknown Source) 
    at com.google.android.gms.auth.zzd.getToken(Unknown Source) 
    at com.google.android.gms.auth.zzd.getToken(Unknown Source) 
    at com.google.android.gms.auth.zzd.getToken(Unknown Source) 
    at com.google.android.gms.auth.GoogleAuthUtil.getToken(Unknown Source) 
    at com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAccountCredential.getToken(GoogleAccountCredential.java:255) 
    at com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAccountCredential$RequestHandler.intercept(GoogleAccountCredential.java:279) 
    at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:859) 
    at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:419) 
    at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:352) 
    at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.execute(AbstractGoogleClientRequest.java:469) 
    at com.shantanu.hellocloudendpoints.EndPointAsyncTask.doInBackground(EndPointAsyncTask.java:53) 
    at com.shantanu.hellocloudendpoints.EndPointAsyncTask.doInBackground(EndPointAsyncTask.java:22) 
    at android.os.AsyncTask$2.call(AsyncTask.java:288) 

を取得しています:

public class MainActivity extends AppCompatActivity { 
     private static final int REQUEST_ACCOUNT_PICKER = 2; 
     private SharedPreferences settings; 
     private String accountName; 
     private GoogleAccountCredential credential; 

     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_main); 

      settings = getSharedPreferences("FamousQuotesAndroid1", 0); 
      credential = GoogleAccountCredential.usingAudience(this, "server:client_id:xxxxxxxxx.apps.googleusercontent.com"); 
      setAccountName(settings.getString("ACCOUNT_NAME", null)); 
      if (credential.getSelectedAccountName() == null) { 
       chooseAccount(); 
      } 
     } 

     private void setAccountName(String accountName) { 
      SharedPreferences.Editor editor = settings.edit(); 
      editor.putString("ACCOUNT_NAME", accountName); 
      editor.commit(); 
      credential.setSelectedAccountName(accountName); 
      this.accountName = accountName; 
     } 

     void chooseAccount() { 
      startActivityForResult(credential.newChooseAccountIntent(), 
        REQUEST_ACCOUNT_PICKER); 
     } 

     @Override 
     protected void onActivityResult(int requestCode, int resultCode, 
             Intent data) { 
      super.onActivityResult(requestCode, resultCode, data); 
      switch (requestCode) { 
       case REQUEST_ACCOUNT_PICKER: 
        if (data != null && data.getExtras() != null) { 
         String accountName = 
           data.getExtras().getString(
             AccountManager.KEY_ACCOUNT_NAME); 
         if (accountName != null) { 
          setAccountName(accountName); 
         } 
        } 
        break; 

      } 
     } 

     public void getQuotes(View v) { 
      new EndPointAsyncTask(this).execute(); 
     } 

     public GoogleAccountCredential getCredential() { 
      return credential; 
     } 
    } 





@Override 
    protected List<Quote> doInBackground(Void... params) { 
     if (myApiService == null) { // Only do this once 
      QuoteApi.Builder builder = new 
        QuoteApi.Builder(AndroidHttp.newCompatibleTransport(), 
        new AndroidJsonFactory(), context.getCredential()).setRootUrl("https://xxxxx.appspot.com/_ah/api/"); 
      builder.setApplicationName(context.getPackageName()); 
      myApiService = builder.build(); 
     } 
     try { 
      return myApiService.listQuote().execute().getItems(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
      return Collections.EMPTY_LIST; 
     } 
    } 

エンドポイント法

@ApiMethod(name = "listQuote", scopes = {Constants.EMAIL_SCOPE}, 
      clientIds = {Constants.WEB_CLIENT_ID, 
        Constants.ANDROID_CLIENT_ID, 
        com.google.api.server.spi.Constant.API_EXPLORER_CLIENT_ID}, 
      audiences = {Constants.ANDROID_AUDIENCE}) 
    public CollectionResponse<Quote> listQuote(@Nullable @Named("cursor") String cursorString, 
               @Nullable @Named("count") Integer count, User user) throws UnauthorizedException { 
     if (user == null) throw new UnauthorizedException("User is Not Valid"); 
     Query<Quote> query = ofy().load().type(Quote.class); 
     if (count != null) query.limit(count); 
     if (cursorString != null && cursorString != "") { 
      query = query.startAt(Cursor.fromWebSafeString(cursorString)); 
     } 
     List<Quote> records = new ArrayList<Quote>(); 
     QueryResultIterator<Quote> iterator = query.iterator(); 
     int num = 0; 
     while (iterator.hasNext()) { 
      records.add(iterator.next()); 
      if (count != null) { 
       num++; 
       if (num == count) break; 
      } 
     } 
//Find the next cursor 
     if (cursorString != null && cursorString != "") { 
      Cursor cursor = iterator.getCursor(); 
      if (cursor != null) { 
       cursorString = cursor.toWebSafeString(); 
      } 
     } 
     return CollectionResponse.<Quote>builder().setItems(records).setNextPageToken(cursorString).build(); 
    } 
+0

ネットワークに接続できないようですが、まず接続を確認してください。 – lsiva

+0

資格情報なしで動作します。これは、資格情報を渡すときだけネットワーク例外を与えます(サーバー側のログはありません)。資格情報をヌルとして渡すと、認証失敗の例外が発生します。 (サーバー側のログも表示されます) –

+0

私はいくつかのことをsimiar [ここ](http://stackoverflow.com/questions/31623798/google-identity-toolkit-android-demo-getting-network-error/31633716#31633716)見つけました。これはネットワークが遅いでしょうか?私はAirtel Hネットワーク上にあり、速度は問題ありません。 –

答えて

1

は最後に問題を発見しました。テスト用に使用していた端末では、Google Playサービスのバックグラウンドデータが制限されていました。 バックグラウンドデータの制限が解除されると、動作が開始されました。

関連する問題