2015-06-08 2 views
0

Я использую следующий код для получения информации о пользователях через google plus login.Google plus API не возвращает адрес электронной почты

$token = $this->session->userdata('access_token'); 
$client = new Google_Client(); 
$client->setAccessToken($token); 
$response = $this->_gp_plus->people->get('me'); 

но он возвращает следующие данные только

[kind] => plus#person 
[etag] => "RqKWnRU4WW46-6W3rWhLR9iFZQM/IyjIQXmlWZGNFFImOAvg7vCilO0" 
[gender] => male 
[objectType] => person 
[id] => 116202429381449556139 
[displayName] => Vijay Kumar 
[name] => Array 
     (
      [familyName] => Kumar 
      [givenName] => sara 
     ) 

[url] => https://plus.google.com/116202429381449556139 
[image] => Array 
     (
      [url] => https://lh5.googleusercontent.com/-ae5axUqF88I/AAAawAAAAAssAAAI/AAAAAAAAssACo/djlbpkT0Okc/photo.jpg?sz=50 
      [isDefault] => 
     ) 

[isPlusUser] => 1 
[circledByCount] => 57 
[verified] => 

адрес электронной почты, не возвращается сюда. кто-нибудь знает, в чем проблема?

+1

* Хм ... *, если я вспомнить, Google/Gmail не позволит вам раскрыть свои адреса электронной почты. –

+1

, вы должны определить область как 'email' в своем запросе' api' –

+0

@ Fred-ii- Google позволяет вам получить адрес электронной почты, прошедший аутентификацию пользователей. – abraham

ответ

0

Несколько вещей:

  • Какие возможности вы используете, если вы не просить email сферу, вы не будете получать по электронной почте
  • Какой маркер доступа вы используете? Простой ключ API не может получить адрес электронной почты, вы должны использовать Sign-in.

Для входа в систему вы будете выполнять поток OAuth 2.0, как описано в the Google Sign-in documentation.

+0

Подпись означает? PLS объяснить или дать мне ссылку ссылки – saravankg

2

Я нашел решение для успешного получения адреса электронной почты с помощью API Google+.

Во-первых, я использовал следующий пример, чтобы получить разрешение URL для клиента:

from oauth2client import client 
flow = client.flow_from_clientsecrets(
    'client_secret.json', 
    scope='https://www.googleapis.com/auth/plus.profile.emails.read', 
    redirect_uri='YOUR_REDIRECT_URI') 
auth_uri = flow.step1_get_authorize_url() 
print auth_uri 

Обратите внимание, что scope должен быть

https://www.googleapis.com/auth/plus.profile.emails.read

вместо

https://www.googleapis.com/auth/plus.me.

А потом в моем приложении, я просил

https://www.googleapis.com/plus/v1/people/me?access_token=ACCESS_TOKEN.

Или просто называется API, как этот вопрос уже упоминалось выше:

plus.people.get({ userId: 'me', auth: oauth2Client }, function(err, profile) { 
    if (err) { 
     console.log('An error occured', err); 
    return; 
    } 
    console.log(profile); 
}); 

Наконец, я получил по электронной почте в ответ:

{ 
"kind": "plus#person", 
"etag": "\"...."", 
"occupation": "Researcher and Developer, Student and Programmer", 
"skills": "Programming && Web Design && Server Management", 
"gender": "male", 
"emails": [ { "value": "[email protected]", "type": "account" } ], 
.... 
Смежные вопросы