我正在尝试转到使用OAuth2的新的战网开发人员门户。我已经成功取回了客户端令牌和访问令牌,它们可以正常工作并返回我的Battle.net标签和ID号。
完成此操作后,我将尝试调用API以获得完整的字符列表,然后可以将其循环到数据库中进行缓存。
$fields = array(
'code' => $code,
'scope' => 'wow.profile',
'redirect_uri' => $redirectUri,
'grant_type' => 'client_credentials',
);
$clientToken = getClientToken($fields, $url, $clientId, $clientSecret);
function getClientToken($fields, $url, $clientId, $clientSecret){
//initiate curl
$ch = curl_init();
//set curl parameters and options
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, count($fields));
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_USERPWD, "$clientId:$clientSecret");
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
//execute curl
$result = curl_exec($ch);
//decode the json returned from b.net to get application token
$result = json_decode($result);
//close curl connection
curl_close($ch);
$clientToken = $result->access_token;
$_SESSION['user']['userToken'] = $clientToken;
return $clientToken;
}
这是我用来获取客户ID调用并指定范围的代码。
现在的问题是当我尝试使用下面的代码进行客户端调用之前,使用收到的应用程序令牌进行调用
$charactersJson = file_get_contents('https://eu.api.blizzard.com/wow/user/characters?access_token='.$applicationToken);
我收到以下错误:
<oauth>
<error_description>Insufficient scope for this resource</error_description>
<error>insufficient_scope</error>
</oauth>
有人知道我可能做错了什么吗?暴雪的旧API接受了返回数据的范围,但他们的新文档未指定(我可以看到)范围的列表或范围。