调用 Orange Product Order 事件服务时出现身份验证错误

Getting Authentication error while calling the Orange Product Order event service

我们正在实施 Orange 业务应用 API。为此,我们需要调用 Orange 服务。此服务具有承载类型身份验证 (Oauth2)。我能够成功获取访问令牌并且访问令牌有效期为 90 天。通过使用最新的访问令牌,我尝试通过在 header 中发送访问令牌来调用 Orange 服务,但每次都出现未经授权的访问错误。

Here is code

public static function sendEventProductOrder($eventProductOrdering) {

        $jsonMapper = new JsonMapper();

        $opts = array('http' => array('method'=>'POST',
                                        'header'=>'Content-type: application/x-www-form-urlencoded\r\n'.'Authorization: Bearer xxxxxxxxxxxxxxxxx\r\n',
                                        'content' => json_encode($jsonMapper->unmap($eventProductOrdering)),

        ));

        $context = stream_context_create($opts);

        if (($stream = fopen("https://api.orange.com/mba/productordering/v2/event", 'r', false, $context)) !== false) {
            $content = stream_get_contents($stream);
            $header = stream_get_meta_data($stream);
            fclose($stream);
            return HelperMisc::isEqualIgnoreCase($header['wrapper_data']['0'], 'HTTP/1.1 201 Created');
        }

        return false;
    }

谁能帮我解决这个问题?

感谢您的帮助!

您可以尝试将引用 ' 更改为 " 吗?像这样:

$requestArray = [
    'name' => 'User',
    'age'  => 100
];

'header'  => "Content-type: application/x-www-form-urlencoded\r\n" .
             "Authorization: Bearer xxxxxxxxxxxxxxxxx\r\n",
'content' => http_build_query($requestArray)

因为 \r\n 在一个引号 ' 内不起作用,它发送 'as is'