2015-02-04 6 views
9

Я провожу уже один день, разбил один стакан, и я очень злюсь об этом, я не понимаю, чего хочет от меня Google, и что не так.Google OAuth 2.0 «error»: «redirect_uri_mismatch»

Я включил Google+ Апи в консоли разработчика google_ api enabled , создал новый идентификатор клиента OAuth client id

$ch = curl_init('https://accounts.google.com/o/oauth2/token'); 
curl_setopt($ch,CURLOPT_POSTFIELDS,'code=4%2FPp1GWqC6PIr3wNYrZ5kK4T9oitxBoo0fBqBrVNQfE-g.ElKDUjQ7E28SoiIBeO6P2m-0RPaolgI&grant_type=authorization_code&redirect_uri=https%3A%2F%2Fmyprivatedomain.local.com%2Foauth2callback&client_id=%mycliet_id%&client_secret=%mysecret%'); 
curl_setopt($ch,CURLOPT_POST,1); 
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST'); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_HEADER, true); 
var_dump(curl_exec($ch)); 

создал все как в инструкции здесь: https://developers.google.com/+/web/signin/server-side-flow, кнопка Gplus появится на странице, и это успешно запросить доступ для авторизованного пользователя. но когда я сделал шаг 8 Шаг 8: Инициализация клиентской библиотеки API Google и запустить службу Google+ моего запроса каждый раз получить ответ «ошибки»: «redirect_uri_mismatch»

Я знаю, что эта ошибка появляется, когда вы не зарегистрировали redirect_uri в Google Консоли или когда вы делаете ошибку типа, но я зарегистрировал его, а также просто для тестирования пытался настроить разные URL-адреса (измененные имена доменов, измененные протоколы с https на https), но это никогда за работой! Я понятия не имею, что еще я могу проверить, пожалуйста, совет, по крайней мере, что-то.

+0

Вы используете https://github.com/google/google-api-php-client? –

+0

@ Hans Z yes, как часть моего приложения symfony2 – Unstaged

+0

«Дружественное примечание: выберите« Веб-приложение »вместо« Другое »при создании учетных данных, я выбрал« Другое »и столкнулся с проблемами, он работал локально, но не работал на live домен –

ответ

19

Документы говорят на шаге 1. https://developers.google.com/+/web/signin/server-side-flow#step_1_create_a_client_id_and_client_secret, что не должно быть настроено перенаправление URI, только «Авторизованные исходники JavaScript». В запросе авторизации и обмене токена значение параметра redirect_uri должно быть установлено на postmessage.

Edit: Предшествующий уровень техники на этом: Google OAuth 2 authorization - Error: redirect_uri_mismatch

+2

большое спасибо! не было очевидно, что URL-адрес перенаправления в клиентской конфигурации должен быть «postmessage», он работает сейчас! инструкция сказала, что postmessage должен быть значением атрибута data-redirecturi, но никогда client_config, это беспорядок – Unstaged

+1

. Еще одна вещь, которую следует отметить, заключается в том, что существует задержка между установкой значения на экране учетных данных и их вступлением в силу и процессом входа в систему работает. Для меня это было пару минут каждый раз, когда я что-то менял. – Ads

+0

Проведя несколько часов, пытаясь решить эту проблему, ваш ответ мне очень помогает! Документация Google не очень ясна. На стороне сервера, если вы используете библиотеку клиентов Google API, вы должны использовать этот код: '$ client-> setRedirectUri ('postmessage');' вместо '$ client-> setRedirectUri ('http: //your.url. ..'); ' – Guicara

2

Просто столкнулся с этой проблемой сам. В моем случае мои учетные данные были настроены для установленного приложения , NOT веб-приложение. Кажется, что Installed application s не может быть сконфигурирован с redirect URL s. Я создал новые учетные данные как web application, и это дало мне возможность установить серию redirect url s.

Следуя советам этого и других ответов, я убедился, что URL-адрес соответствует (copy-paste), и это правильно работает для меня. Я также сделал это в окне инкогнито.

В результате мой браузер был перенаправлен на URL-адрес, который я помещал в параметр redirect_url, с помощью специального параметра строки запроса code, заполненного кодом, используемым для следующего шага.

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

  • Нет связанных вопросов^_^