繁体   English   中英

如何在授权码和客户端密码的帮助下使用 PHP 获取 fortnox 访问令牌?

[英]How to get fortnox access token with the help of authorization code and client secret using PHP?

我在 fortnox 有一个沙盒帐户,我正在尝试使用以下代码获取访问令牌,但我不断收到相同的错误:

$requestMethod = "GET";

$ch = curl_init();

$options = array(
    'Authorization-Code: '. AUTHORIZATION_CODE .'',
    'Client-Secret: '. CLIENT_SECRET .'',
    'Content-Type: '. CONTENT_TYPE .'',
    'Accept: '. ACCEPTS .''
);

curl_setopt ($ch, CURLOPT_CAINFO, "/xampp/htdocs/cacert.pem");
curl_setopt($ch, CURLOPT_URL, "https://api.fortnox.se/3/");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, $options);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $requestMethod);

$curlResponse = curl_exec($ch);
$info = curl_getinfo($ch);

//echo 'Took ' . $info['total_time'] . ' seconds for url ' . $info['url'];

echo $curlResponse;

if ($curlResponse === FALSE) {

    echo "cURL Error: " . curl_error($ch);

}
curl_close($ch);

我使用以下与您的代码非常接近的代码获取Access-Token 对我来说很好。

您的错误已在“ 错误”页面上进行了说明,但未对您已显示的文本添加任何新内容。

请注意,您只能检索一次Access-Token ,请检查Fortnox文档中的“ 身份验证”部分。

访问令牌只能与每个授权码一起检索一次,具有相同授权码的多个请求将使授权码和访问令牌均无效。

public function actionRetrieveAccessToken($authCode, $clientSecret)
{
    $headers = [
        'Authorization-Code: ' . $authCode,
        'Client-Secret: ' . $clientSecret,
        'Content-Type: application/json',
        'Accept: application/json',
    ];

    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, 'https://api.fortnox.se/3/');
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
    $responseText = curl_exec($curl);

    $response = json_decode($responseText, true);
    if (isset($response['ErrorInformation'])) {
        echo 'Request failed with error messages:' . PHP_EOL;
        echo $response['ErrorInformation']['Error'] . ': ';
        echo $response['ErrorInformation']['Message'];
        echo ' (' . $response['ErrorInformation']['Code'] . ')' . PHP_EOL;
    } else {
        echo 'Access Token: ' . $response['Authorization']['AccessToken'] . PHP_EOL;
    }
}
$content_type = 'application/json';
$api_url="api url here";
$curl = curl_init();
$headers = array(
        'Content-Type: '.$content_type.'',
        'Authorization : '.'Bearer ' . $this->access_token
);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method);
if (!empty($data)) 
{
    $data = json_encode($data);
    curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
}
$response = curl_exec($curl);
logthis($response,"utils");
curl_close($curl);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM