首页 > 解决方案 > 为 Hybridauth 提供程序 (WordPress) 设置自定义端点时遇到问题

问题描述

我正在尝试使用 Hybridauth(版本 3)获取经过身份验证的用户的 WordPress 博客列表,使用https://public-api.wordpress.com/rest/v1.1/me/sites端点。发现为此,我需要将 WordPress 的默认 authorize_url 端点从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

不幸的是,这会导致以下错误:

致命错误:未捕获的类型错误:传递给 Hybridauth\Adapter\AbstractAdapter::setApiEndpoints() 的参数 1 必须是 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);

我究竟做错了什么?我觉得我错过了一些非常明显的东西。

标签: phphybridauth

解决方案


端点应该是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();
}

推荐阅读