需要登录php 401中的Google API OAuth

需要登录php 401中的Google API OAuth,php,google-oauth,google-api-php-client,Php,Google Oauth,Google Api Php Client,我正在尝试使用谷歌api购物(商家),我被这个问题困住了 我对php不是很熟悉,但对我来说,代码似乎很好,我想做的就是尝试从我的商店取货。我已经按照google建议的步骤在开发者控制台中设置了客户端id和客户端机密,但是在登录之后我仍然得到了错误 下面是我使用的代码: <?php /* * Uses google API to make an authorized request trough a google dev console project. */ require_onc

我正在尝试使用谷歌api购物(商家),我被这个问题困住了

我对php不是很熟悉,但对我来说,代码似乎很好,我想做的就是尝试从我的商店取货。我已经按照google建议的步骤在开发者控制台中设置了客户端id和客户端机密,但是在登录之后我仍然得到了错误

下面是我使用的代码:

<?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());
}


旧uri是动态的,使用代码参数

,您必须在Google API控制台中设置重定向uri。它应该与您尝试接收令牌的位置相同。
/**
 * IMPORTANT: this url is used during both two phases of OAuth.
 * If a mistmatch of the redirect uri occours during the two phases, the login
 * fails. Must ignore the code (get) parameter in the second phase.
**/
$redirect_uri = "http://localhost/gshop/action/list.php";