QuickBooks-V3- PHP -SDK у меня работает только частично - Как получилось? - PullRequest
0 голосов
/ 08 февраля 2020

Я пытаюсь использовать QuickBooks-V3- PHP -SDK для синхронизации c данных счета. Я могу успешно пройти авторизацию с помощью OAuth 2.0 и подключить свое клиентское приложение PHP к QuickBooks Online. Однако, хотя я могу сделать запрос getCompanyInfo и получить результаты, я не могу сделать запрос getUserInfo (или большинство других запросов по этому вопросу), так как он будет жаловаться о том, что объект токена доступа еще не установлен.

При подключении к QuickBooks и получении авторизации все работает, и объект токена доступа помещается в сеанс PHP. Но по какой-то причине он жалуется, когда я пытаюсь получить данные UserInfo.

Вот ошибка, которую я получаю:

Fatal error:  Uncaught QuickBooksOnline\API\Exception\SdkException: [0]: Can't get OAuth 2 Access Token Object. It is not set yet.

thrown in /compiled/src/Core/OAuth/OAuth2/OAuth2LoginHelper.php on line 129

Вот как я пытаюсь получить UserInfo:

$dataService->updateOAuth2Token($accessToken);
$OAuth2LoginHelper = $dataService->getOAuth2LoginHelper();
$result = $OAuth2LoginHelper->getUserInfo();

Опять же, получение CompanyInfo работает без проблем.

Кто-нибудь знает, что происходит?

Ниже я включаю код от apiCall. php ( из примера пакета HelloWorld, далее отредактированный мной). Этот файл используется для отправки запросов через Ajax после того, как я уже подключился и получил разрешение от QuickBooks Online.

<?php

require_once(__DIR__ . '/vendor/autoload.php');
use QuickBooksOnline\API\Core\ServiceContext;
use QuickBooksOnline\API\DataService\DataService;
use QuickBooksOnline\API\Core\Http\Serialization\XmlObjectSerializer;
use QuickBooksOnline\API\Facades\Invoice;

session_start();

function makeAPICall()
{

    // Create SDK instance
    $config = include('config.php');
    $dataService = DataService::Configure(array(
        'auth_mode' => 'oauth2',
        'ClientID' => $config['client_id'],
        'ClientSecret' =>  $config['client_secret'],
        'RedirectURI' => $config['oauth_redirect_uri'],
        'scope' => $config['oauth_scope'],
        'baseUrl' => "development"
    ));

    /*
     * Retrieve the accessToken value from session variable
     */
    $accessToken = $_SESSION['sessionAccessToken'];
    $dataService->throwExceptionOnError(true);

    /*
     * Update the OAuth2Token of the dataService object
     */
    $dataService->updateOAuth2Token($accessToken);

    //Get the requested data:
    $action = filter_input(INPUT_GET, "action", FILTER_SANITIZE_SPECIAL_CHARS);
    $method = "get$action";

    switch($action){
        case "CompanyInfo":
            $result = $dataService->$method();
            break;

        case "UserInfo":
            $OAuth2LoginHelper = $dataService->getOAuth2LoginHelper();
            $result = $OAuth2LoginHelper->getUserInfo();
            break;

        case "InvoiceExample":
            $allInvoices = $dataService->Query("SELECT * FROM Invoice");
            $result = $allInvoices;
            break;
    }


    var_dump($result);

    return $result;
}

$result = makeAPICall();

?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...