首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP中的cURL输出

PHP中的cURL输出
EN

Stack Overflow用户
提问于 2016-04-23 23:20:47
回答 2查看 244关注 0票数 1

我有这个curl输出,其中我用我的id,secret和url替换。它会给出正确的响应。

代码语言:javascript
复制
curl -XPOST -H "Cache-Control:no-cache"   -H "Content-Type:application/json"   --user 'id:secret'   'url'

但是,当我尝试用php以下面的方式编写它时,它给出了无效提示的错误。如何在php中以同样的方式从上面的输出重写curl?谢谢!

代码语言:javascript
复制
$url = 'https://test.api.neteller.com/v1/oauth2/token?grant_type=client_credentials';
$clientId = 'client_id;
$clientSecret = 'secret_id';    
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_USERPWD,  $clientId . ":" . $clientSecret);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($curl);
curl_close($curl);

它给出了错误- 'invalid cleint',但当我在控制台中运行它时,它返回访问令牌。此代码仅用于访问令牌,不用于支付。

编辑:我现在的代码是:

代码语言:javascript
复制
$url ='https://test.api.neteller.com/v1/oauth2/token?grant_type=client_credentials';
$clientId = NETELLER_CLIENT_ID;
$clientSecret = NETELLER_CLIENT_SECRET;
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

$headers = array(
'Authorization: Basic '. base64_encode($clientId) . ':' . base64_encode($clientSecret),
'Content-Type:application/json'
);

curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
$response = curl_exec($curl);
if (curl_error($curl)) {
curl_close($curl);
throw new \Exception('System error. Can not get neteller token');
}
curl_close($curl);

EN

回答 2

Stack Overflow用户

发布于 2016-04-23 23:30:09

已尝试将凭据添加为标头的一部分。

代码语言:javascript
复制
    $headers = array(
        'Authorization: Basic '. base64_encode($clientID . ':' . $clientSecret),
        'Content-Type:application/json'
    );

 curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
票数 0
EN

Stack Overflow用户

发布于 2016-04-23 23:44:22

好吧,我发现了。

更新:

当你尝试运行你的代码时,你可能会得到{ "error": "invalid_client" }的原因有4个。

  1. 您正在生产环境中使用测试帐户中的client_id + client_secret,反之亦然。
  2. 您的client_id或client_secret值错误。
  3. 您的应用程序发出传出请求的IP地址不在您的商家帐户的白名单中。
  4. 您没有正确发送授权标头。
  5. 您在代码中遗漏了curl_setopt($curl, CURLOPT_HTTPHEADER, array("Content-Type:application/json", "Cache-Control:no-cache"));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36812618

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档