2016-04-05 4 views
0

Я пытаюсь найти последние решения с GoogleApiClient.Plus.API (Android) для получения электронной почты для профиля Gplus. В Интернете, stackoverflow, каждый найденный пример устарел и устарел и бесполезен.как получить электронную почту от GPlus с помощью андроид

Если это может быть выбрано только из Auth.GOOGLE_SIGN_IN_API, то это двухэтапный процесс для получения половины информации из Auth API и отдыха с Plus.API ??

Заранее благодарим за ответ.

ответ

0

Сначала я предполагаю, что у вас есть кнопка для Google плюс знак в

@Override 
public void onClick(View v) { 
    switch (v.getId()) { 
     case R.id.sign_in_button: 
      Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient); 
      startActivityForResult(signInIntent, RC_SIGN_IN); 
      break; 
     } 
} 

На ваш onActivityResult поймаешь знак в результате

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 

    // Result returned from launching the Intent from and you can extract your user information there 
    if (requestCode == RC_SIGN_IN) { 
     GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data); 
     if (result.isSuccess()) { 
     // Signed in successfully, show authenticated UI. 
     GoogleSignInAccount acct = result.getSignInAccount(); 
     //This line is your need 
     String yourEmail = acct.getEmail(); 
     } 
    } 
} 
+0

Нет, я не хочу использовать этот GoogleSignInApi так как я должен извлечь другую информацию из gplus api. Так вы предлагаете называть оба api один за другим. Я думаю, что должен быть способ получить электронную почту от Person или GPlus Profile apis. – user2746732

0

Вот как получить электронную почту, связанную с устройство и, возможно, с вашим приложением тоже:

Pattern emailPattern = Patterns.EMAIL_ADDRESS; // API level 8+ 
Account[] accounts = AccountManager.get(context).getAccounts(); 
for (Account account : accounts) { 
    if (emailPattern.matcher(account.name).matches()) { //If email matches the account associated with the device 
     String possibleEmail = account.name; 
     ... 
    } 
} 

Сообщите мне, если это сработало

+0

Я пытаюсь использовать, как показано ниже m_GoogleApiClient = новый GoogleApiClient.Builder (m_activity) .enableAutoManage (m_activity, это) .addConnectionCallbacks (это) .addOnConnectionFailedListener (это) .addApi (Plus.API) .addScope (Plus .SCOPE_PLUS_LOGIN) .build(); m_GoogleApiClient.connect(); – user2746732

0

После двух дней борьбы в прошлом этого поста спас мою жизнь .. How to get profile like gender from google signin in Android?

Но APIs устарело, сделал немного царапин голову и мог заставить его работать.

создать свой клиент API Google, как этот

GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) 
       .requestEmail() 
       .requestScopes(new Scope(Scopes.PLUS_LOGIN)) 
       .build(); 

     m_GoogleApiClient = new GoogleApiClient.Builder(m_activity) 
       .enableAutoManage(m_activity, this) 
       .addApi(Auth.GOOGLE_SIGN_IN_API, gso) 
       .addApi(Plus.API) 
       .build(); 

затем на onActivityResult()

GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data); 
     Log.d(TAG, "handleSignInResult:" + result.isSuccess()); 
     if (result.isSuccess()) { 
      GoogleSignInAccount acct = result.getSignInAccount(); 
      fetchConnectedProfileInfo(); 
     } 

public void fetchConnectedProfileInfo() 
{ 
    Log.d(TAG, "fetchConnectedProfileInfo"); 
    if (m_GoogleApiClient.hasConnectedApi(Plus.API)) { 
     Plus.PeopleApi.load(m_GoogleApiClient, "me").setResultCallback(this); 
    } 
} 

Приведи мою страницу GitHub для полного образца кода https://github.com/sandipsahoo2k2/social-login

Смежные вопросы