2013-02-26 10 views

Antwort

3

Haben Sie sich die API reference angesehen?

Die Klasse, die Sie wahrscheinlich suchen, ist com.google.android.gms.auth.GoogleAuthUtil.

Es bietet unter anderem die folgenden Verfahren:
static String getToken(Context context, String accountName, String

Beschreibung:
authentifiziert den Benutzer und gibt einen gültigen Token Google-Authentifizierung oder löst eine Ausnahme aus, wenn ein Fehler war ein Token bekommen .

Verbrauch:

String token; 
try { 
    token = GoogleAuthUtil.getToken(context, accountName, scope); 
} catch (GooglePlayServicesAvailabilityException playEx) { 
    Dialog dialog = GooglePlayServicesUtil.getErrorDialog(
     playEx.getConnectionStatusCode(), 
     Activity.this, 
     AUTH_REQUEST_CODE); 
    // Use the dialog to present to the user. 
} catch (UserRecoverableAutException recoverableException) { 
    Intent recoveryIntent = recoverableException.getIntent(); 
    // Use the intent in a custom dialog or just startActivityForResult. 
} catch (GoogleAuthException authEx) { 
    // This is likely unrecoverable. 
    Log.e(TAG, "Unrecoverable authentication exception: " + authEx.getMesssage(), authEx); 
} catch (IOException ioEx) { 
    Log.i(TAG, "transient error encountered: " + ioEx.getMessage()); 
    doExponentialBackoff(); 
} 
+5

Was ist der Umfang? – Sameer

+1

Diese [link] (https://gist.github.com/ianbarber/9607551) erklärt, wie genau Token abgerufen werden sollte. Wickeln Sie diesen Code in eine asynchrone Aufgabe ein. – Arefin

+0

@arefin ist Kontoname bezieht sich auf E-Mail-ID in dem angegebenen Link? –

3

Um Zweifel an oauth Umfang zu beantworten (nur nützlich für die Googler):

vollständig zu verstehen, Google-es einige über Authentifizierungs- und Autorisierungskonzepte.

Überprüfen Sie, ob Benutzer/Passwort existiert über Authentifizierung Teil.

Umfang erforderlich ist Autorisierung Teil: was Sie berechtigt sind, im Auftrag des Benutzers zu tun oder zu erhalten. Eine Liste der zulässigen Bereiche finden Sie in der OAuth-Servicedokumentation.

Von Google und G +, am häufigsten Bereiche finden Sie unter:

„openid Profil E-Mail https://www.googleapis.com/auth/plus.loginhttps://www.googleapis.com/auth/plus.me“: https://developers.google.com/+/api/oauth?hl=pt-ZA

zum Beispiel alle möglichen Informationen vom Benutzer zu erhalten, können Sie den Umfang nutzen können

(die erste Wort-Protokoll beziehen, durch Worte, gefolgt, die für die Felder in Antwort fragen, und die gewünschten Bereiche können mit einem Raum toghether Separator deklariert werden)

Hinweis: Wenn Sie später versuchen, Ihr Zugriffstoken zum Anfordern oder Ausführen von Aufgaben zu verwenden, die Sie zuvor nicht mit einem Bereich angefordert haben, kann der Dienst einen Autorisierungsfehler zurückgeben.

Für Google, ein gutes Werkzeug, um Sie über seinen OAuth Service und Umfang zu lernen, verwenden können, ist der OAuth Spielplatz: https://developers.google.com/oauthplayground/

0

Sie müssen es holen Asynchron-Aufgabe verwenden.

public void onConnected(Bundle connectionHint) { 
    // Reaching onConnected means we consider the user signed in. 
    Log.i(TAG, "onConnected"); 

    // Update the user interface to reflect that the user is signed in. 
    mSignInButton.setEnabled(false); 
    mSignOutButton.setEnabled(true); 
    mRevokeButton.setEnabled(true); 

    // Retrieve some profile information to personalize our app for the user. 
    Person currentUser = Plus.PeopleApi.getCurrentPerson(mGoogleApiClient); 


    AsyncTask<Void, Void, String > task = new AsyncTask<Void, Void, String>() { 
     @Override 
     protected String doInBackground(Void... params) { 
      String token = null; 
      final String SCOPES = "https://www.googleapis.com/auth/plus.login "; 

      try { 
       token = GoogleAuthUtil.getToken(
         getApplicationContext(), 
         Plus.AccountApi.getAccountName(mGoogleApiClient), 
         "oauth2:" + SCOPES); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } catch (GoogleAuthException e) { 
       e.printStackTrace(); 
      } 


      return token; 

     } 

     @Override 
     protected void onPostExecute(String token) { 
      Log.i(TAG, "Access token retrieved:" + token); 
     } 

    }; 
    task.execute(); 


    System.out.print("email" + email); 
    mStatus.setText(String.format(
      getResources().getString(R.string.signed_in_as), 
      currentUser.getDisplayName())); 

    Plus.PeopleApi.loadVisible(mGoogleApiClient, null) 
      .setResultCallback(this); 

    // Indicate that the sign in process is complete. 
    mSignInProgress = STATE_DEFAULT; 
} 

Ihr Zugriffstoken wird in Token-Variable gespeichert.

Verwandte Themen