unable to connect to my google endpoints with my service object with auth2.0 getting IOException: NetworkError

0 views
Skip to first unread message

Shantanu Agarwal via StackOverflow

unread,
Sep 1, 2016, 1:48:06 PM9/1/16
to google-appengin...@googlegroups.com

I have set up my project using following links calling from android and add autherisation backend. I have double checked my credentials and SHA1 key.

But I am still getting following error

    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)

This is my code below:

    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;
        }
    }

Endpoint method

@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();
    }


Please DO NOT REPLY directly to this email but go to StackOverflow:
http://stackoverflow.com/questions/39277898/unable-to-connect-to-my-google-endpoints-with-my-service-object-with-auth2-0-get
Reply all
Reply to author
Forward
0 new messages