googleapis.com/oauth2/v2/userinfo возвращает нулевое значение - PullRequest
0 голосов
/ 05 марта 2019

нижеуказанные URL-адреса, которые я использовал для входа в Google на моем веб-сайте.

URL для входа

https://accounts.google.com/o/oauth2/auth?scope='.urlencode('https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email') . '&redirect_uri=' . urlencode(CLIENT_REDIRECT_URL) . '&response_type=code&client_id=' . CLIENT_ID . '&access_type=online

URL-адрес токена доступа

https://accounts.google.com/o/oauth2/token

URL-адрес конечной точки UserInfo (новый URL)

https://www.googleapis.com/oauth2/v2/userinfo (returns null values)

Google + URL-адрес конечной точки, который я сейчас использую

https://www.googleapis.com/plus/v1/people/me (returns email, names, etc)

Я хочу получить имя пользователя и адрес электронной почты для сохранения в моей БД.как я могу получить имя и адрес электронной почты с URL-адресом конечной точки UserInfo, который я упомянул выше?

1 Ответ

0 голосов
/ 07 марта 2019

На основе примера кода, на который вы ссылаетесь, необходимо внести или попробовать как минимум пару изменений.

Во-первых, вам может потребоваться запросить разные области, поскольку области определяют, какиебудет возвращен.Этот код опирается на области, которые будут недействительными или более не предлагаются. области действия , которые вы должны использовать для получения профиля и электронной почты:

  • openid
  • профиль
  • электронная почта

(Более длинные имена областей, которые вы используете , должны также работать, но вы можете попробовать и эти более простые.)

Так что login_url на шаге 2 может выглядеть болеекак это:

$login_url = 'https://accounts.google.com/o/oauth2/v2/auth?scope=' . urlencode('openid profile email') . '&redirect_uri=' . urlencode(CLIENT_REDIRECT_URL) . '&response_type=code&client_id=' . CLIENT_ID . '&access_type=online';

Хотя конечная точка userinfo v2 все еще частично поддерживается, она устарела.Вместо этого попробуйте выполнить одно из следующих действий:

Однако есть еще несколько моментов, на которые следует обратить внимание:

  • Не все данные могут быть доступны.Если пользователь не установил некоторую информацию профиля, API не сможет предоставить ее.
  • Поля не будут такими же, как в конечной точке Plus.Таким образом, хотя данные могут быть там, они могут находиться в другом месте возвращаемого объекта.
...