OAuth2 - ошибка 400: redirect_uri_mismatch - PullRequest
0 голосов
/ 07 июля 2019

У меня есть сайт, и я хотел бы разместить свои продукты в Google Shopping, в настоящее время я использую электронные таблицы Google, но я бы хотел сделать это путем интеграции. Чтобы импортировать мои продукты автоматически. Для этого я проверил, что мне нужно использовать OAuth, но я не могу заставить его работать. Я не могу найти, где ошибка может быть.

Код PHP:

<?php
require_once __DIR__ . '/vendor/autoload.php';

define('MERCHANT_ID', 'xxxxxxxxx');
session_start();

try {
     $client = new Google_Client();
     $client->setAuthConfig(__DIR__ . '/Merchant_Center-c8fd21e1ec51.json'); 
     $client->addScope(Google_Service_ShoppingContent::CONTENT);
} catch (Google_Exception $e) {
    echo 'Error.';
}

$request_uri = 'https://mywebsite.com/googleShopping/';
$client->setRedirectUri($request_uri);

if (isset($_SESSION['oauth_access_token'])) {
    $client->setAccessToken($_SESSION['oauth_access_token']);

    if ($client->isAccessTokenExpired()) {
        unset($_SESSION['oauth_access_token']);
    }
} elseif (isset($_GET['code'])) {
    $client->authenticate($_GET['code']);
    $token = $client->fetchAccessTokenWithAuthCode($_GET['code']);
    $_SESSION['oauth_access_token'] = $token;
} else {
    $auth_url = $client->createAuthUrl();
    header('Location: ' . filter_var($auth_url, FILTER_SANITIZE_URL));
    exit;
}

$service = new Google_Service_ShoppingContent($client);
print_r($service->products->get(MERCHANT_ID, 'online:en:US:10081'));

Файл Merchant_Center-c8fd21e1ec51.json:

Merchant_Center-c8fd21e1ec51.json file

Ошибка:

The error

Полномочия:

Credentials

Экран согласия OAuth:

OAuth consent screen

Подтверждение домена:

Domain Verification

Сервисные счета:

Service accounts

Может кто-нибудь сказать мне, что может происходить? Большое спасибо.

Ответы [ 2 ]

0 голосов
/ 18 июля 2019

Решение:

<?php
require_once __DIR__ . '/../../vendor/autoload.php';
require_once __DIR__ . '/base.php'; // https://github.com/googleapis/google-api-php-client/blob/master/examples/templates/base.php

define('MERCHANT_ID', 'xxxxxxx');

$client = new Google_Client();

if ($credentials_file = checkServiceAccountCredentialsFile()) {
    try {
        // $credentials_file = service-account-credentials.json
        $client->setAuthConfig($credentials_file);
    } catch (Google_Exception $e) {
        echo 'Ocorreu um erro ao abrir o arquivo de configuração.';
    }
} else {
    echo missingServiceAccountDetailsWarning();
    exit;
}

$client->setApplicationName("Merchant Center");
$client->setScopes([Google_Service_ShoppingContent::CONTENT]);
$service = new Google_Service_ShoppingContent($client);
print_r($service->products->get(MERCHANT_ID, 'online:en:US:10081'));
0 голосов
/ 10 июля 2019

Нажмите на этот URL

Google mismatch

Вкл URI авторизованного перенаправления установлен https://mywebsite.com/googleShopping/

Если он не показывает какую-либо форму, вы можете следить за этим, перейдите в консоль Google -> Выбрать проект и нажмите «Учетные данные».

Там вы можете увидеть учетные данные для идентификаторов клиентов OAuth 2.0. Если нет, создайте один OAuth 2.0 (Создать учетные данные -> Идентификатор клиента OAuth)

OAuth

Нажмите на кнопку редактирования.

На этой странице вы можете установить URI авторизованного перенаправления.

Redirect URI

Введите https://mywebsite.com/googleShopping/ как авторизованные URL перенаправления.

URL перенаправления, который вы задали здесь, и код должны совпадать.

...