проблемы авторизации OAuth 2.0

Статус
В этой теме нельзя размещать новые ответы.

асс

Мой дом здесь!
Регистрация
13 Окт 2006
Сообщения
762
Реакции
230
Добрый день.
Помогите как пройти авторизацию.

Жму на сссылку - Аутентификация через Google
Выдает ошибку


400. That’s an error.


Error: redirect_uri_mismatch

Application: ssu

You can email the developer of this application at: w@gmail.com

The redirect URI in the request: Для просмотра ссылки Войди или Зарегистрируйся did not match a registered redirect URI.

Learn more

Request Details

That’s all we know.


код

PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru">
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/>
    <title>Аутентификация через Google</title>
</head>
<body>

<?php

$client_id = '1081633000000ххххххauh65de.apps.googleusercontent.com'; // Client ID
$client_secret = 'ZQXхххххххMvz2-7'; // Client secret
$redirect_uri = 'http://localhost:4567/'; // Redirect URIs

$url = 'https://accounts.google.com/o/oauth2/auth';

$params = array(
    'redirect_uri'  => $redirect_uri,
    'response_type' => 'code',
    'client_id'     => $client_id,
    'scope'         => 'https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile'
);

echo $link = '<p><a href="' . $url . '?' . urldecode(http_build_query($params)) . '">Аутентификация через Google</a></p>';

if (isset($_GET['code'])) {
    $result = false;

    $params = array(
        'client_id'     => $client_id,
        'client_secret' => $client_secret,
        'redirect_uri'  => $redirect_uri,
        'grant_type'    => 'authorization_code',
        'code'          => $_GET['code']
    );

    $url = 'https://accounts.google.com/o/oauth2/token';

    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_POST, 1);
    curl_setopt($curl, CURLOPT_POSTFIELDS, urldecode(http_build_query($params)));
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
    $result = curl_exec($curl);
    curl_close($curl);
    $tokenInfo = json_decode($result, true);

    if (isset($tokenInfo['access_token'])) {
        $params['access_token'] = $tokenInfo['access_token'];

        $userInfo = json_decode(file_get_contents('https://www.googleapis.com/oauth2/v1/userinfo' . '?' . urldecode(http_build_query($params))), true);
        if (isset($userInfo['id'])) {
            $userInfo = $userInfo;
            $result = true;
        }
    }

    if ($result) {
        echo "Социальный ID пользователя: " . $userInfo['id'] . '<br />';
        echo "Имя пользователя: " . $userInfo['name'] . '<br />';
        echo "Email: " . $userInfo['email'] . '<br />';
        echo "Ссылка на профиль пользователя: " . $userInfo['link'] . '<br />';
        echo "Пол пользователя: " . $userInfo['gender'] . '<br />';
        echo '<img src="' . $userInfo['picture'] . '" />'; echo "<br />";
    }

}

?>

</body>
</html>
 
А разве OAuth работает на локалхосте ?
 
Мне кажется у Вас редирект происходит не на тот что указан в настройках приложения. К примеру в настройках: example.com, а Вы редиректите на localhost
 
А разве OAuth работает на локалхосте ?
Если стоят все библиотеки по почему нет? Другое дело что урл Для просмотра ссылки Войди или Зарегистрируйся не корректный для его АПИ, скорее всего. приведите его в более понятный для гугла вид - с доменной зоной
 
У меня на сайте есть папка скажем demo


Вот тут инструкция Для просмотра ссылки Войди или Зарегистрируйся
Тут я слил библиотеки Для просмотра ссылки Войди или Зарегистрируйся

Заливаю папку google-api-php-client на сайт в папку demo

тут же создаю файл из шага 2
quickstart.php.


В этот файлик я прописал данные которые взял в аккаунте гугла


Шаг 4:

Когда на сайте выводится сгенерировнная ссылка Пример
Для просмотра ссылки Войди или Зарегистрируйся


st запрашивает следующее:
Просмотр файлов на Google Диске и управление ими
Соглашаясь с этими документами, вы разрешаете приложению и компании Google использовать ваши данные в соответствии с Условиями использования и Политикой конфиденциальности. Вы можете изменить настройки доступа к аккаунту в любое время.

Жму enter
е удалось подключиться к удалённому серверу

Вы попытались получить доступ к адресу Для просмотра ссылки Войди или Зарегистрируйся,

который сейчас недоступен. Убедитесь, что веб-адрес (URL) введён правильно, и попытайтесь перезагрузить страницу.

На этом я застрял.

Хочу сделать хранение бекапов на Гугл диске. Весь день промучался так и не смог ничего сделать.


Похоже справка у них старая для OAuth 1.0
А на сайте стоит OAuth 2.0


В общем застрял конкретно. Не знаю что и делать теперь.
Все готовые решения из сети не работают.

в ссылке Для просмотра ссылки Войди или Зарегистрируйсяlocalhost%3A4567%2Foauth2callback&client_id=1081633247003-66876p4uam9n3a7atj115qcn2auh65de.apps.googleusercontent.com&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive&access_type=offline&approval_prompt=force

Локалхост я так думаю что в гугле так задумано
Вот тут можно почитать Для просмотра ссылки Войди или Зарегистрируйся
 
Последнее редактирование модератором:
Поддерживаю, не проблема чтобы работало на localhost, надо чтобы при переправлении открывалось именно то расположение, где и ваш скрипт.
И Для просмотра ссылки Войди или Зарегистрируйсяlocalhost сделайте, либо создайте ещё один локальный домен.

Если делать как у них, то запускать надо с помощью следующей команды:

php -S localhost:4567
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху