WordPress OAuth2 - 以安全的方式检索令牌

时间:2018-03-11 16:36:54

标签: wordpress oauth-2.0

我有一些代码可以为我的WordPress应用程序生成有效的授权令牌,但我无法弄清楚如何存储它或以安全的方式将其传递到其他地方。

require ('vendor/autoload.php');

const CLIENT_ID     = 'xxxx';
const CLIENT_SECRET = 'yyyy';
const REDIRECT_URI = '<mysite>/testRestOauth.php';
const AUTHORIZATION_ENDPOINT = '<myothersite>/oauth/authorize';
const TOKEN_ENDPOINT = '<myothersite>/oauth/token';

$client = new OAuth2\Client(CLIENT_ID, CLIENT_SECRET);

if (!isset($_GET['code'])){
  $auth_url = $client->getAuthenticationUrl(AUTHORIZATION_ENDPOINT, REDIRECT_URI);
header('Location: ' . $auth_url);
die('Redirect');
}
else {
  $params = array('code' => $_GET['code'], 'redirect_uri' => REDIRECT_URI);
  $response = $client->getAccessToken(TOKEN_ENDPOINT, 'authorization_code', $params);

  $access_tkn = $response['result']['access_token'];        
}

一个快速的方法(不是安全的!)应该调用这个页面并获得结果,但我不能将页面暴露给公众,因为每个人都能够生成并使用令牌!!

由于“代码”值尚未可用时发生重定向,我甚至无法通过cUrl调用此页面。

有什么想法吗?我相信很多人都面临同样的问题。

由于

1 个答案:

答案 0 :(得分:0)

首先,您需要向AUTHORIZATION_ENDPOINT发出请求。这是用户将对您的应用程序进行身份验证和授予访问权限以检索/使用其个人信息的位置。

然后,您将被重定向到REDIRECT_URI,在那里您将从查询字符串中检索代码。您将使用此代码向TOKEN_ENDPOINT发出请求,以获取您将用于每个用户的每个后续请求的令牌。是的,这些令牌对于每个用户都是不同的,并且它们最终会到期。你需要使用刷新令牌来处理这个过期,你也应该从TOKEN_ENDPOINT接收它。