Je suis l'exemple de google pour obtenir le jeton mais sans succès . Ne parvient toujours pas à acquérir le jeton . C'est la dernière façon dont Google affiche les développeurs de votre page Je crois que l'erreur ne réside pas dans mon code
private String CLIENTE_ID = "...apps.googleusercontent.com";
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestIdToken(CLIENTE_ID)
.requestEmail()
.build();
// Build GoogleAPIClient with the Google Sign-In API and the above options.
mGoogleApiClient = new GoogleApiClient.Builder(this)
.enableAutoManage(this /* FragmentActivity */, this /* OnConnectionFailedListener */)
.addApi(Auth.GOOGLE_SIGN_IN_API, gso)
.build();
imgBGoogle.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
startActivityForResult(signInIntent, 9002);
}
});
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
// Result returned from launching the Intent from GoogleSignInApi.getSignInIntent(...);
if (requestCode == 9002) {
GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
handleSignInResult(result, data);
}
if (requestCode == 9002) {
// [START get_id_token]
GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
Log.d(TAG, "onActivityResult:GET_TOKEN:success:" + result.getStatus().isSuccess());
if (result.isSuccess()) {
GoogleSignInAccount acct = result.getSignInAccount();
String idToken = acct.getIdToken();
// Show signed-in UI.
Log.d(TAG, "idToken:" + idToken);
Log.d(TAG, "\n ");
// TODO(user): send token to server and validate server-side
} else {
// Show signed-out UI.
Log.d(TAG, "idToken: fail");
}
// [END get_id_token]
}
}
private void handleSignInResult(GoogleSignInResult result, Intent data) {
getToken1(data);
getToken2(result);
String BOOKS_API_SCOPE = "https://www.googleapis.com/auth/books";
String GPLUS_SCOPE = "https://www.googleapis.com/auth/plus.login";
String mScopes = "oauth2:" + BOOKS_API_SCOPE + " " + GPLUS_SCOPE;
}
void getToken1(Intent data){
GoogleSignInResult a = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
if (a.isSuccess()) {
Log.d(TAG, "TOKEN 1: " + a.getSignInAccount().getIdToken());
Log.d(TAG, "DISPLAY NAME 1: " +a.getSignInAccount().getDisplayName());
Log.d(TAG, "ID 1: " + a.getSignInAccount().getId()+"\n ");
}else{
Log.d(TAG, "ID 1: falhou"+"\n ");
}
}
void getToken2(GoogleSignInResult result){
if (result.isSuccess()) {
GoogleSignInAccount acct = result.getSignInAccount();
Log.d(TAG, "TOKEN 2: " + acct.getIdToken());
Log.d(TAG, "DISPLAY NAME 2: " + acct.getDisplayName());
Log.d(TAG, "ID 2: " + acct.getId()+"\n ");
}else{
Log.d(TAG, "ID 2: falhou"+"\n ");
}
}
comment puis-je obtenir le jeton? quelqu'un peut-il m'aider?
Je suis tombé sur un problème similaire, je n'utilisais pas de client Web OAuth, cela fonctionnait avec la base de feu et j'ai pensé que cette solution plus simple pourrait être utile pour quelqu'un.
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestIdToken(getString(R.string.default_web_client_id))
.requestEmail()
.build();
Il n'est pas nécessaire de définir default_web_client_id, cela fonctionnera comme collé. C'est une chaîne générée par le plugin google-services.
Il semble que votre code soit correct, mais essayez de suivre exactement le guide officiel. Cela a fonctionné pour moi: http://Android-developers.blogspot.com/2016/03/registering-oauth-clients-for-google.html
Assurez-vous que vous utilisez un jeton Web, essayez de créer un nouveau et utilisez-le .
public class GplusTokenUtils extends AsyncTask<Void, Void, String> {
String accessToken = "";
private GoogleSignInAccount account;
public IGetToken iGetTokenListener;
public interface IGetToken {
void onGetToken(String token);
}
public void getTokenLitener(IGetToken tokenListener) {
this.iGetTokenListener = tokenListener;
}
public GplusTokenUtils() {
iGetTokenListener = new IGetToken() {
@Override
public void onGetToken(String token) {
}
};
}
private Activity activity;
public void setActivity(Activity activity) {
this.activity = activity;
}
public void setAccount(GoogleSignInAccount account) {
this.account = account;
}
@Override
protected String doInBackground(Void... voids) {
try {
accessToken = GoogleAuthUtil.getToken(activity, account.getEmail(), "oauth2:profile email");
} catch (IOException e) {
e.printStackTrace();
} catch (GoogleAuthException e) {
e.printStackTrace();
}
return accessToken;
}
@Override
protected void onPostExecute(String aVoid) {
Log.d("GPLUS_TOKEN", aVoid);
iGetTokenListener.onGetToken(aVoid);
}
}
Et n'oublie pas ça
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestIdToken(getString(R.string.default_web_client_id))
.requestEmail()
.build();