è possibile ottenere il risultato di collegamento SIGN_IN_REQUIRED per una serie di motivi, ad esempio .:
- se si chiama
PlusClient.clearDefaultAccount();
.
- se si disconnette l'app su http://plus.google.com/apps o chiamando
PlusClient.revokeAccessAndDisconnect();
.
- se l'app richiede ambiti di autorizzazione in aggiunta a quelli richiesti in precedenza.
Per SIGN_IN_REQUIRED, ConnectionResult ricevuto contiene un PendingIntent che può essere utilizzato per risolvere il problema. Nel campione in the instructions you're following il codice di esempio gestisce l'errore in onConnectionFailed
con il seguente codice:
@Override
public void onConnectionFailed(ConnectionResult result) {
if (result.hasResolution()) {
try {
result.startResolutionForResult(this, REQUEST_CODE_RESOLVE_ERR);
} catch (SendIntentException e) {
mPlusClient.connect();
}
}
// Save the result and resolve the connection failure upon a user click.
mConnectionResult = result;
}
result.startResolutionForResult()
visualizzerà un selettore account o la finestra di dialogo autorizzazioni per risolvere i problemi di cui sopra, e restituire il controllo onActivityResult
, ad esempio:
@Override
protected void onActivityResult(int requestCode, int responseCode, Intent intent) {
if (requestCode == REQUEST_CODE_RESOLVE_ERR && responseCode == RESULT_OK) {
mConnectionResult = null;
mPlusClient.connect();
}
}
A questo punto la chiamata a PlusClient.connect()
dovrebbe riuscire.
Ho sostituito onConnectionFailed con la tua versione e funziona bene ora, grazie – serenskye
@Lee, soluzione corretta, ma ricevendo un messaggio di toast "errore interno occured" .Hai un'idea di questo.Grazie in anticipo ... – jagdish
@jagdish - prova abilitando la registrazione dettagliata e vedere cosa appare in LogCat. Eseguilo sulla riga di comando: adb shell setprop log.tag.GooglePlusPlatform VERBOSE – Lee