Я успешно использую его уже больше года.
Сегодня, пытаясь устранить ошибку, я удалил -установил приложение, внес некоторые изменения и попытался восстановить данные приложения (код восстановления использует знак учетной записи Google).
Поэтому я получил исключение нулевого указателя, потому что код подписи учетной записи Google не работает.
Здесь является актуальным код.
Код: Выделить всё
import com.google.android.gms.auth.api.signin.GoogleSignIn;
import com.google.android.gms.auth.api.signin.GoogleSignInAccount;
import com.google.android.gms.auth.api.signin.GoogleSignInClient;
import com.google.android.gms.auth.api.signin.GoogleSignInOptions;
import com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAccountCredential;
import com.google.api.client.googleapis.extensions.android.gms.auth.UserRecoverableAuthIOException;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
try {
GoogleSignInAccount googleSignInAccount = GoogleSignIn.getLastSignedInAccount(this);
//Log.d("Checj","Check");
if (googleSignInAccount == null) {
signIn();
}
GoogleAccountCredential credential = GoogleAccountCredential.usingOAuth2(this, Collections.singleton(Scopes.DRIVE_FILE));
credential.setSelectedAccount(googleSignInAccount.getAccount());
googleDriveService = new Drive.Builder(
AndroidHttp.newCompatibleTransport(),
new GsonFactory(),
credential)
.setApplicationName(getString(R.string.app_name))
.build();
} catch (Exception e) {
e.printStackTrace();
}
}
private void signIn() {
mGoogleSignInClient = buildGoogleSignInClient();
Log.d("Check Here",mGoogleSignInClient.toString());
startActivityForResult(mGoogleSignInClient.getSignInIntent(), REQUEST_CODE_SIGN_IN);
//Log.d("Check Here",mGoogleSignInClient.toString());
}
private GoogleSignInClient buildGoogleSignInClient() {
GoogleSignInOptions signInOptions =
new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestScopes(new Scope(Scopes.DRIVE_APPFOLDER))
.requestEmail()
.build();
return GoogleSignIn.getClient(getApplicationContext(), signInOptions);
}
private void handleSignInResult(Intent result) {
GoogleSignIn.getSignedInAccountFromIntent(result)
.addOnSuccessListener(new OnSuccessListener() {
@Override
public void onSuccess(GoogleSignInAccount googleSignInAccount) {
Log.d("Sucess", "We have logged in");
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.e("Failed to login", "Unable to sign in.", e);
}
});
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent resultData) {
switch (requestCode) {
case REQUEST_CODE_SIGN_IN:
if (resultCode == Activity.RESULT_OK && resultData != null) {
handleSignInResult(resultData);
}
break;
}
super.onActivityResult(requestCode, resultCode, resultData);
}
Есть предложения, как заставить его работать?
Подробнее здесь: https://stackoverflow.com/questions/793 ... gn-failing
Мобильная версия