Я пытаюсь использовать google api для покупок (продавцов), и я застрял в этой проблеме.Google API OAuth в php 401 Требуется Войти
Я не очень хорошо знаком с php, но для меня код кажется прекрасным, все, что я хочу сделать, это попытаться достать предметы из моего магазина. Я установил идентификатор клиента и секрет клиента в консоли разработчика в соответствии с предлагаемыми действиями Google, но все же после регистрации я получаю сообщение об ошибке.
Вот код, я использую:
<?php
/*
* Uses google API to make an authorized request trough a google dev console project.
*/
require_once __DIR__ . '/../../google-api-php-client-master/vendor/autoload.php';
//require_once 'Google/Client.php';
//require_once 'Google/Service/ShoppingContent.php';
require_once '../Config.php';
$redirect_uri = $actual_link = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"; //this is used during the auth process
//$merchantId = $_POST['merchantId'];
$merchantId = Config::MERCHANT_ID;
$service;
$client = Config::getGoogleClient();
$client->setRedirectUri($redirect_uri);
doOAuth($client);
echo "TOKEN : " + $client->getAccessToken() . " " . $_SESSION['oauth_access_token'];
//after authentication we can create a service object
$service = new Google_Service_ShoppingContent($client);
$products = $service->products->listProducts($merchantId);
$parameters = array();
while (!empty($products->getResources())) {
foreach ($products->getResources() as $product) {
printProduct($product);
}
if (!empty($products->getNextPageToken())) {
break;
}
$parameters['pageToken'] = $products->nextPageToken;
$products = $service->products->listProducts($merchantId, $parameters);
}
printf("\nEnd");
////////////////////////
//$_SESSION['oauth_access_token'] = null;
function doOAuth(&$client) {
if (isset($_SESSION['oauth_access_token'])) {
$client->setAccessToken($_SESSION['oauth_access_token']);
} elseif (isset($_GET['code'])) {
// $client->setAccessType("offline"); //IMPORTANT
$token = $client->authenticate($_GET['code']);
$_SESSION['oauth_access_token'] = $token;
} else {
header('Location: ' . $client->createAuthUrl());
exit;
}
}
function printProduct($product) {
printf("%s %s\n", $product->getId(), $product->getTitle());
}
И я получаю следующее сообщение об ошибке:
0 Array Fatal error: Uncaught exception 'Google_Service_Exception' with message '{ "error": { "errors": [ { "domain": "global", "reason": "required", "message": "Login Required", "locationType": "header", "location": "Authorization" } ], "code": 401, "message": "Login Required" } } ' in C:\Program Files (x86)\Apache Software Foundation\Apache24\htdocs\google-api-php-client-master\src\Google\Http\REST.php:123 Stack trace: #0 C:\Program Files (x86)\Apache Software Foundation\Apache24\htdocs\google-api-php-client-master\src\Google\Http\REST.php(82): Google_Http_REST::decodeHttpResponse(Object(GuzzleHttp\Psr7\Response), Object(GuzzleHttp\Psr7\Request), 'Google_Service_...') #1 [internal function]: Google_Http_REST::doExecute(Object(GuzzleHttp\Client), Object(GuzzleHttp\Psr7\Request), 'Google_Service_...') #2 C:\Program Files (x86)\Apache Software Foundation\Apache24\htdocs\google-api-php-client-master\src\Google\Task\Runner.php(181): call_user_func_array(Array, Array) #3 C:\Program Files (x86)\Apac in C:\Program Files (x86)\Apache Software Foundation\Apache24\htdocs\google-api-php-client-master\src\Google\Http\REST.php on line 123
Спасибо за любую помощь
EDIT: дополнительная информация я был в состоянии обнаружение этой ошибки внутри объекта $ token
[error] => redirect_uri_mismatch [error_description] => Bad Request
Blockquote
Вы должны будете установить переадресацию URI в консоли API Google. Он должен быть таким же, как и место, где вы пытаетесь получить токены. – dikesh