首页 文章

Google_Auth_Exception尝试获取OAuth 2.0服务帐户身份验证时

提问于
浏览
0

这是我的代码:

session_start();
    error_reporting(E_ALL);
    ini_set('display_errors', 1);
    require_once 'Google/Client.php';
    require_once 'Google/Service/AdExchangeSeller.php';

    $scriptUri = "http://example.com/some_seller_api.php";

    $client_id = 'XXXXXX.apps.googleusercontent.com';
    $service_account_name = 'XXXXXXXXX@developer.gserviceaccount.com';
    $key_file_location = '/XXXXX/privatekey.p12';

    $client = new Google_Client();
    $client->setApplicationName("Example_app");

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

    $key = file_get_contents($key_file_location);
    $cred = new Google_Auth_AssertionCredentials(
        $service_account_name,
        array('https://www.googleapis.com/auth/adexchange.seller.readonly'),
        $key
    );

    $client->setAssertionCredentials($cred);

    if($client->getAuth()->isAccessTokenExpired()) {
        $client->getAuth()->refreshTokenWithAssertion($cred);
    }
    $_SESSION['service_token'] = $client->getAccessToken();

    $service = new Google_Service_AdExchangeSeller($client);
    $acc = $service->adclients->listAdclients();

我在https://github.com/google/google-api-php-client/blob/master/examples/service-account.php的官方手册和示例中做了所有事情 .

我有一个错误:

Fatal error: Uncaught exception 'Google_Auth_Exception' with message 'Error refreshing the OAuth2 token, message: '{ "error" : "access_denied", "error_description" : "Requested client not authorized." }''

我究竟做错了什么?

1 回答

  • 0

    您似乎未使用目标服务授权您的应用程序 . OAuth2步骤之一是您的应用程序(将要访问该服务的应用程序)需要与目标服务“注册”(或授权) . 这是您注册回调URL等的方式 .

    根据您的代码,您正在访问Ad Exchange Seller REST API . 打开以下链接并按照分步指南进行操作,以解决您遇到的问题:

    https://developers.google.com/ad-exchange/seller-rest/getting_started#auth

相关问题