Возникли проблемы при настройке пользовательских конечных точек для провайдера Hybridauth (WordPress) - PullRequest
0 голосов
/ 04 июля 2018

Я пытаюсь использовать Hybridauth (ver 3), чтобы получить список блогов WordPress аутентифицированного пользователя, используя https://public -api.wordpress.com / rest / v1.1 / me / sites конечная точка. Выяснил, что для этого мне нужно изменить конечную точку authorize_url по умолчанию для WordPress с https://public -api.wordpress.com / oauth2 / authenticate на https://public -api.wordpress .com / oauth2 / авторизацию .

Hybridauth позволяет вам изменить конечную точку, как в этом примере здесь: https://github.com/hybridauth/hybridauth/blob/master/examples/example_03.php

К сожалению, это приводит к следующей ошибке:

Неустранимая ошибка: Uncaught TypeError: Аргумент 1 передан Hybridauth \ Adapter \ AbstractAdapter :: setApiEndpoints () должен быть экземпляр Hybridauth \ Data \ Collection, заданный массив

код:

$config = [
    "callback"      => APP_URL."/callback", 
    "keys"          => array("id" => "XXXXXX", "secret" => "YYYYYYYYYY"),
    "scope"         => array("global", "auth"),
    "endpoints"     => [
        "authorize_url"    => "https://public-api.wordpress.com/oauth2/authorize",
    ]
];

$adapter = new Hybridauth\Provider\WordPress($config);

Что я делаю не так? Я чувствую, что упускаю что-то ужасно очевидное.

1 Ответ

0 голосов
/ 07 июля 2018

Конечные точки должны быть экземпляром Hybridauth\Data\Collection.

Вы можете передать текущее значение массива конечных точек конструктору Hybridauth\Data\Collection, чтобы создать экземпляр и установить его для ключа конечных точек в массиве конфигурации.

<?php

include './vendor/autoload.php';


$endpoints = new Hybridauth\Data\Collection([
    'api_base_url'     => 'https://public-api.wordpress.com/rest/v1.1/',
    'authorize_url'    => 'https://public-api.wordpress.com/oauth2/authorize',
    'access_token_url' => 'https://public-api.wordpress.com/oauth2/token',
]);

$config = [
    'callback'  => Hybridauth\HttpClient\Util::getCurrentUrl(),
    'keys'      => [ 'id' => 'client-id', 'secret' => 'client-secret' ],
    'endpoints' => $endpoints
];

try {
    $adapter = new Hybridauth\Provider\WordPress( $config );
    $adapter->authenticate();

    $tokens = $adapter->getAccessToken();
    print_r($tokens);

    $userProfile = $adapter->getUserProfile();
    print_r( $userProfile );

    $adapter->disconnect();
}
catch (Exception $e) {
    echo $e->getMessage();
}
...