2016-06-21 5 views
1

Ниже и модифицирование, некоторые инструкции из this Google help article, я получил JavaScript, чтобы вернуть код что-то вроде этого (это один из примера Google):Google Вход с PHP но не с помощью библиотеки

{"code":"4/yU4cQZTMnnMtetyFcIWNItG32eKxxxgXXX-Z4yyJJJo.4qHskT-UtugceFc0ZRONyF4z7U4UmAI"} 

Который я могу затем отправить на свой PHP-сервер. Однако я не понимаю, как обрабатывать его на стороне сервера, не используя библиотеки Google; Я бы предпочел просто сделать HTTPS-запрос с сервера на Google с кодом, чтобы вернуть данные, а не импортировать их весь API. Возможно ли это, и как я буду это делать?

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

ответ

1

У вас есть шаг 1, у вас есть код авторизации.

Следующий шаг заключается в обмене его на маркер доступа Это должно быть отправлено как HTTP Post

https://accounts.google.com/o/oauth2/token
код = {Код авторизации} & client_id = {ClientId} .apps.googleusercontent.com & client_secret = {ClientSecret} & redirect_uri = {redirect_uri} & grant_type = authorization_code

сервер должен вернуть что-то вроде этого:

{ 
"access_token" : "ya29.1.AADtN_VSBMC2Ga2lhxsTKjVQ_ROco8VbD6h01aj4PcKHLm6qvHbNtn-_BIzXMw", 
"token_type" : "Bearer", 
"expires_in" : 3600, 
"refresh_token" : "1/J-3zPA8XR1o_cXebV9sDKn_f5MTqaFhKFxH-3PUPiJ4" 
} 

Любой запрос вы отправить АНИ просто добавить & access_token = {маркер доступа}

Чтобы получить новый после того, что один истекла вы другой HTTP POST, чтобы получить новый, используя обновить маркер сверху

https://accounts.google.com/o/oauth2/token
client_id = {ClientID} .apps.googleusercontent.com & client_secret = {ClientSecret} & refresh_token = 1/ffYmfI0sjR54F t9oupubLzrJhD1hZS5tWQcyAvNECCA & grant_type = refresh_token

сервер должен ответить

{ 
"access_token" : "ya29.1.AADtN_XK16As2ZHlScqOxGtntIlevNcasMSPwGiE3pe5ANZfrmJTcsI3ZtAjv4sDrPDRnQ", 
"token_type" : "Bearer", 
"expires_in" : 3600 
} 

Примечание: Я только сделал это с серверными приложениями, которые на самом деле не протестировали его с веб-приложением. Он должен работать, только убедитесь, что ваш URL-адрес перенаправления установлен правильно.

Сообщите мне, если у вас есть какие-либо проблемы. Код разорвал мой учебник Google 3 legged oauth2 flow.