2016-10-04 5 views
2

Warum erhalte ich diesen Fehler? Ich habe bereits ein Projekt in der Google Developer Console erstellt, die Drive API und die Google+ API aktiviert und die "Android Client ID" mit meiner signierten apk sha1 hinzugefügt (ich habe sie übrigens bereits auf der Google Play Console als Betaversion geteilt).

ich Berechtigungen GET_ACCOUNTS und wenn ich meine G + Mail in der Liste wählen, ich diesen Fehler:G + Verbindung fehlgeschlagen statusCode = SIGN_IN_REQUIRED

D/G+: Connection failed4ConnectionResult{statusCode=SIGN_IN_REQUIRED, resolution=PendingIntent 

Muss ich client_id.json irgendwo in meinem Projektordner hinzufügen? (Ich habe es nur in Google Developer Console für Drive API.)

Codes:

 // initialize g+ api client 
    if (Sp.getBoolean("plus_pic", false)) { 

     mGoogleApiClient = new GoogleApiClient.Builder(this) 
       .addConnectionCallbacks(this) 
       .addOnConnectionFailedListener(this) 
       .addApi(Drive.API) 
       .addScope(Drive.SCOPE_FILE) 
       .build(); 
    } 

und:

@Override 
public void onConnected(Bundle bundle) { 

    if (Plus.PeopleApi.getCurrentPerson(mGoogleApiClient) != null) { 
     Person currentPerson = Plus.PeopleApi.getCurrentPerson(mGoogleApiClient); 

     String accountName = Plus.AccountApi.getAccountName(mGoogleApiClient); 
     Person.Image personImage; 
     Person.Cover.CoverPhoto personCover; 

     try { 

      personImage = currentPerson.getImage(); 
      personCover = currentPerson.getCover().getCoverPhoto(); 
     } catch (Exception e) { 
      Log.e("G+ COnnection error"," ->"+e.toString()); 
      personCover = null; 
      personImage = null; 
     } 

     if (personCover != null && personImage != null) { 

      String imgUrl = personImage.getUrl(); 
      Log.e("g+ connection","cover and pic not null"); 
      // getting full size image 
      StringBuilder stringBuilder = new StringBuilder(); 
      stringBuilder.append(imgUrl); 
      stringBuilder.delete(imgUrl.length() - 6, imgUrl.length()); 
      Log.d("G+", stringBuilder.toString()); 
      mGoogleName.setText(currentPerson.getDisplayName()); 
      mGoogleId.setText(accountName); 
      // setting cover pic 
      ImageLoader.getInstance().loadImage(personCover.getUrl(), displayImageOptions, new SimpleImageLoadingListener() { 
       @Override 
       public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) { 
        super.onLoadingComplete(imageUri, view, loadedImage); 
        drawerHeaderParent.setBackgroundColor(Color.parseColor("#ffffff")); 
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { 
         drawerHeaderView.setBackground(new BitmapDrawable(loadedImage)); 
        } else 
         drawerHeaderView.setBackgroundDrawable(new BitmapDrawable(loadedImage)); 

       } 

       @Override 
       public void onLoadingFailed(String imageUri, View view, FailReason failReason) { 
        super.onLoadingFailed(imageUri, view, failReason); 
        drawerHeaderView.setBackgroundResource(R.drawable.app_header); 
        drawerHeaderParent.setBackgroundColor(Color.parseColor((currentTab == 1 ? skinTwo : skin))); 
       } 

       @Override 
       public void onLoadingStarted(String imageUri, View view) { 
        super.onLoadingStarted(imageUri, view); 
        drawerHeaderView.setBackgroundResource(R.drawable.app_header); 
        drawerHeaderParent.setBackgroundColor(Color.parseColor((currentTab == 1 ? skinTwo : skin))); 
       } 
      }); 

      // setting profile pic 
      ImageLoader.getInstance().loadImage(stringBuilder.toString(), displayImageOptions, new SimpleImageLoadingListener() { 
       @Override 
       public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) { 
        super.onLoadingComplete(imageUri, view, loadedImage); 
        drawerProfilePic.setImageBitmap(loadedImage); 
        drawerProfilePic.setVisibility(View.VISIBLE); 
       } 

       @Override 
       public void onLoadingFailed(String imageUri, View view, FailReason failReason) { 
        super.onLoadingFailed(imageUri, view, failReason); 
       } 
      }); 


     } else { 
      Toast.makeText(this, getResources().getText(R.string.no_cover_photo), Toast.LENGTH_SHORT).show(); 
      drawerHeaderView.setBackgroundResource(R.drawable.app_header); 
      drawerHeaderParent.setBackgroundColor(Color.parseColor((currentTab == 1 ? skinTwo : skin))); 
     } 
    } 
} 

@Override 
public void onConnectionSuspended(int i) { 

    Log.d("G+", "Connection suspended"); 
    new Thread(new Runnable() { 
     @Override 
     public void run() { 
      if (mGoogleApiClient != null) { 

       mGoogleApiClient.connect(); 
      } 
     } 
    }).run(); 
} 

public void onConnectionFailed(final ConnectionResult result) { 
    Log.d("G+", "Connection failed"+ result.getErrorCode()+result.toString()); 

    if (!mIntentInProgress && result.hasResolution()) { 
     new Thread(new Runnable() { 
      @Override 
      public void run() { 
       try { 
        mIntentInProgress = true; 
        startIntentSenderForResult(result.getResolution().getIntentSender(), 
          RC_SIGN_IN, null, 0, 0, 0); 
       } catch (IntentSender.SendIntentException e) { 
        // The intent was canceled before it was sent. Return to the default 
        // state and attempt to connect to get an updated ConnectionResult. 
        mIntentInProgress = false; 
        if (mGoogleApiClient != null) { 

         mGoogleApiClient.connect(); 
        } 
       } 
      } 
     }).run(); 
    } 
} 

und:

protected void onActivityResult(int requestCode, int responseCode, Intent intent) { 
    if (requestCode == RC_SIGN_IN && !mGoogleApiKey && mGoogleApiClient != null) { 
     new Thread(new Runnable() { 
      @Override 
      public void run() { 
       mIntentInProgress = false; 
       mGoogleApiKey = true; 
       // !mGoogleApiClient.isConnecting 
       if (mGoogleApiClient.isConnecting()) { 
        mGoogleApiClient.connect(); 
       } else 
        mGoogleApiClient.disconnect(); 

      } 
     }).run(); 
    } 

Antwort

1

Sie den Fehler bekam SIGN_IN_REQUIRED Der Client hat versucht, eine Verbindung mit dem Dienst herzustellen, der Benutzer ist jedoch nicht angemeldet.

The client may choose to continue without using the API. Alternately, if hasResolution() returns true the client may call [ startResolutionForResult(Activity, int) ](https://developers.google.com/android/reference/com/google/android/gms/common/ConnectionResult.html#startResolutionForResult(android.app.Activity , int)) to prompt the user to sign in. After the sign in activity returns with RESULT_OK further attempts should succeed.

von diesen forum Basierend versuchen, dieses Problem zu lösen, indem sie auf die Google API-Konsole von Ihrem Google Mail-Konto gehen. Dort sehen Sie eine Deaktivierungsschaltfläche vor Google Drive API. Sie sehen einen Zahnrad- oder Einstellknopf, klicken darauf und erzeugen ein oAuth-Token.

Hier sind einige verwandte Themen:

hoffe, das hilft!

+0

i bereits erzeugt AUTH2 Token und i importiert google_services.json auf "app /" Ordner und ich erhalte diese error.Do ich, dass client_id in meinem Code verwenden müssen? – erginduran

+0

BTW ich überprüft Ihre Links gibt es keine beantwortete Frage ich denke, viele PPL sind mit diesem Problem konfrontiert. – erginduran

0

In meiner Ursache habe ich falsch SHA1-Schlüssel verwendet, um API in der Entwicklerkonsole zu generieren. Dann erstellt SHA1 Schlüssel mit debug.keystore und aktualisiert in meinen api Anmeldeinformationen. Es hat angefangen zu arbeiten.

keytool -list -v -keystore "C:\Users\<user>n\.android\debug.keystore" -alias androiddebugkey -storepass andro 
id -keypass android 
Verwandte Themen