Не удается прочитать данные из API-интерфейса Patreon JSON - PullRequest
0 голосов
/ 05 февраля 2019

Используя код, полученный от Packagist (https://packagist.org/packages/patreon/patreon?q=&p=6), Я не могу получить ожидаемые результаты. Мой код теперь регистрирует пользователя и возвращает его данные (которые я могу просмотреть через var_dump), но явозникли проблемы с его чтением.

Согласно документации API Patreon, данные, полученные от API, автоматически устанавливаются в виде массива, если не указано иное. Я запускаю точный код с их веб-сайта, но их APIвозвращая объект, и я не уверен, как читать данные пользователя и залоговую информацию из него. Я безуспешно пытался установить возвращаемые данные в виде массива или json. Я просто получаю этот беспорядок, когда я конвертируюответ API в массив.

Снимок экрана - https://i.gyazo.com/3d19f9422c971ce6e082486cd01b0b92.png

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

use Patreon\API;
use Patreon\OAuth;

$client_id = 'removed';
$client_secret = 'removed';

$redirect_uri = "https://s.com/redirect";

$href = 'https://www.patreon.com/oauth2/authorize?response_type=code&client_id=' . $client_id . '&redirect_uri=' . urlencode($redirect_uri);

$state = array();

$state['final_page'] = 'http://s.com/thanks.php?item=gold';

$state_parameters = '&state=' . urlencode( base64_encode( json_encode( $state ) ) );

$href .= $state_parameters;

$scope_parameters = '&scope=identity%20identity'.urlencode('[email]');

$href .= $scope_parameters;

echo '<a href="'.$href.'">Click here to login via Patreon</a>';

if (isset($_GET['code']))
{
    $oauth_client = new OAuth($client_id, $client_secret);  
    $tokens = $oauth_client->get_tokens($_GET['code'], $redirect_uri);

    $access_token = $tokens['access_token'];
    $refresh_token = $tokens['refresh_token'];

    $api_client = new API($access_token);
    $campaign_response = $api_client->fetch_campaign();

    $patron = $api_client->fetch_user();
    $patron = (array)$patron;
    die(var_dump($patron));
}

Я хочу иметь возможность просматривать данные пользователя и информацию о залоге. Я пробовал такие вещи, как $ patron-> data-> first_name, $ patron ['data'] ['first_name'] и т. д., у которых есть все сгенерированные ошибки об индексе массива, который не найден.

1 Ответ

0 голосов
/ 15 августа 2019

Вы, наверное, уже что-то выяснили, но я столкнулся с тем же и решил поделиться решением здесь.

Объект JSONAPIResource, который возвращает библиотека patreon, имеет несколько конкретных методов, которые могут возвращатьотдельные фрагменты данных в удобочитаемом формате.

import patreon
from pprint import pprint

access_token = <YOUR TOKEN HERE>   # Replace with your creator access token

api_client = patreon.API(access_token)
campaign_response = api_client.fetch_campaign()

campaign = campaign_response.data()[0]
pprint(campaign.id()) # The campaign ID (or whatever object you are retrieving)
pprint(campaign.type()) # Campaign, in this case
pprint(campaign.attributes()) # This is most of the data you want
pprint(campaign.attribute('patron_count')) # get a specific attribute
pprint(campaign.relationships()) # related entities like 'creator' 'goals' and 'rewards'
pprint(campaign.relationship('goals'))
pprint(campaign.relationship_info()) 
# This last one one ends up returning another JSONAPIResource object with it's own method: .resource() that returns a list of more objects 
# for example, to print the campaign's first goal you could use:
pprint( campaign.relationship_info('goals').resource()[0].attributes() )

Надеюсь, что это кому-нибудь поможет!

...