php - 为 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);
我究竟做错了什么?我觉得我错过了一些非常明显的东西。
解决方案
端点应该是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();
}
推荐阅读
- cassandra - 如何仅按主键集中的一列总结 cassandra 计数器分组?
- python - BeautifulSoup:为什么我收到内部服务器错误?
- python - 是否可以使用 Pandas、seaborn 或 Matplotlib 绘制具有箱的上限和下限的条形图
- c# - C#如何从CheckedListBox中删除多个选中项?
- linux - MediaWiki - 限制对命名空间的访问
- excel - 具有 2 个逻辑条件的 Excel 公式
- html - 直接将woff字体嵌入到blogger
- linux - 无法再连接到我的树莓派
- amazon-web-services - AWS CloudFormation 在通过 CLI 部署时无法创建模板
- ios - 使用 URLSession.shared.dataTask 发出 api 请求