2

如果尝试从另一台服务器(在本例中为同一服务器上的另一个 WP 实例)连接到远程 Wordpress WP-API,我需要使用的流程有点困惑。我正在使用 PECL oAuth 包,以及我从https://secure.php.net/manual/en/class.oauth.php的文档中收集的大部分代码。

这与这样的 wordpress 保存挂钩绑定在一起,因此每次有人在站点 A 上保存帖子时,它都会尝试将一些信息发送到站点 B:

add_action( 'save_post', 'CrossPollinate_Save',10,3);

CrossPollinate_Save 内部是这样的:

$client_key =               "....";
$client_secret =            "....";
$request_token_endpoint =   "http://..../oauth1/request";
$authorize_endpoint =       "http://..../oauth1/authorize";
$access_endpoint =          "http://..../oauth1/access";
$callback =                 $_SERVER['REQUEST_URI'];
$request_token =            ""; //populated later
$request_token_secret =     ""; //populated later


//STEP 1
$oauth = new OAuth($client_key, $client_secret, OAUTH_SIG_METHOD_HMACSHA1, OAUTH_AUTH_TYPE_AUTHORIZATION);
$request_token_info = $oauth->getRequestToken($request_token_endpoint);
if(!empty($request_token_info)) {
    logToFile("Response from getRequestToken", $request_token_info);
} else {
    logToFile("Failed fetching request token: ", $oauth->getLastResponse());
}

$request_token = $request_token_info["oauth_token"];
$request_token_secret = $request_token_info["oauth_token_secret"];

logToFile("request_token is: ", $request_token);
logToFile("request_token_secret is: ", $request_token_secret);

//STEP 2
$oauth->setToken($request_token, $request_token_secret);
$access_token_info = $oauth->getAccessToken($authorize_endpoint."?oauth_callback=".$callback);

if(!empty($access_token_info)) {
    logToFile("Got access token! ", $access_token_info);
} else {
    logToFile("Failed fetching access token: " . $oauth->getLastResponse());
}

我从“第 1 步”得到一个oauth_token和一个,太好了,这部分有效!oauth_token_secret当第 2 步触发时,它最终返回一个包含登录页面标记的响应。如何告诉 oAuth 跳过该步骤并将访问令牌发送回重定向页面?

4

1 回答 1

0

我认为没有办法绕过必须进行完整的 3-legged auth。无论如何,我没有发现任何相反的情况,并且刚刚接受了在获得初始令牌后我必须进行重定向。

于 2016-01-14T17:44:48.630 回答