Curl在我的本地服务器上没有发送

10

我正在使用以下代码获取用户数据,但不知道为什么它会说无效的令牌错误,而在另一台服务器上使用相同的代码时,它可以正常工作。我已经检查了我的系统中是否启用了CURL。您可以使用以下代码在http://specificpromotions.com/test/test.php上看到工作示例。请问可能是什么问题,请帮忙解决。谢谢!

$ch = curl_init();
//you will need to change the 'eric' to what the user is searching for in the manual entry section
$data = array('qFunc' => 'searchActiveStaff', 'qArgs' => 'eric');

curl_setopt($ch,CURLOPT_URL,'http://api.yfcimpact.com/yfc_dev.php/api/usa/person?' . http_build_query($data) );
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch, CURLOPT_USERPWD, "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJob3N0IjoiMTIwLjU5LjE1OS4yMzIiLCJ1c2VybmFtZSI6InJzbWl0aHR5MyIsImlkIjoxMDAwNTQwMjcwLCJpYXQiOjE0MzI4Nzk0NjQsImV4cCI6MTQzMjkwMTA2NCwicm9sZXMiOlsiUk9MRV9VU0VSIiwiUk9MRV9zZXR0aW5ncyIsIlJPTEVfcGVvcGxlIiwiUk9MRV9wZW9wbGVfYWRkX25ldyIsIlJPTEVfcGVvcGxlX2VkaXQiLCJST0xFX3BlcnNvbl9lZGl0X3Blcm1pc3Npb24iLCJST0xFX3NldHRpbmdzX3Blcm1pc3Npb25zIiwiUk9MRV9zZXR0aW5nc19jdXN0b21fZmllbGRzIiwiUk9MRV9vZmZpY2UiLCJST0xFX3NldHRpbmdzX21pbmlzdHJ5X3NpdGVzIiwiUk9MRV9zZXR0aW5nc19taW5pc3RyeV9zaXRlc19hZGQiLCJST0xFX3NldHRpbmdzX2xlZ2FsIiwiUk9MRV9wZW9wbGVfZWRpdF9saXN0IiwiUk9MRV9vZmZpY2VfZmluYW5jaWFsIiwiUk9MRV9vZmZpY2VfYnVkZ2V0X3BsYW4iLCJST0xFX29mZmljZV9taW5zdGF0cyIsIlJPTEVfc2V0dGluZ3NfZmllbGRfbGFiZWxzIiwiUk9MRV9vZmZpY2VfYmdjaGVjayIsIlJPTEVfb2ZmaWNlX3ZlaGljbGUiLCJST0xFX29mZmljZV93b3JrZXJzY29tcCIsIlJPTEVfc2V0dGluZ3NfY3VzdG9tX2ZpZWxkX2dyb3VwcyIsIlJPTEVfc2V0dGluZ3NfdGV4dCIsIlJPTEVfc2V0dGluZ3NfZW1haWwiLCJST0xFX29mZmljZV9jaGFydGVyaW5nIiwiUk9MRV9ldmVudHMiLCJST0xFX3NldHRpbmdfY3VzdG9tcXVlc3Rpb25zIl0sImZ1bGxOYW1lIjoiUm9nZXIgU21pdGgiLCJjb3JlT3JnSWQiOiI0MjcifQ.V9B-TE_72D0YYE5FAHPB_pkYGhkAGiHRQzZjTEb0Jag:" );

$json = curl_exec($ch);
$people = json_decode($json);

print "people who have eric in their name:\n";
var_export($people);

不知道出了什么问题,我把我的Ubuntu 12升级到14,现在我的问题已经解决了 :) - Vinie
希望你没有在这里显示真实的USERPWD :) - Paul Rey
3个回答

1
首先检查您的系统或服务器是否启用了curl。 您可以使用此代码的简单页面进行检查。
<?php 
 phpinfo();
?>

如果启用了curl,它将显示在那里。如果没有启用,请启用它。您可以检查此链接进行操作。
接下来检查curl错误并清除它。 只需在curl_exec($ ch)之后添加此代码即可。
    $ch = curl_init();
    $data = array('qFunc' => 'searchActiveStaff', 'qArgs' => 'eric');
    curl_setopt($ch,CURLOPT_URL,'http://api.yfcimpact.com/yfc_dev.php/api/usa/person?' . http_build_query($data) );
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
    curl_setopt($ch, CURLOPT_USERPWD, "ag:" );    
    if(curl_exec($ch) === false)
{
    echo 'Error Details: ' . curl_error($ch);
}
else
{
    echo 'Success';
}

0

0
在某些API(如Facebook API)中,您需要注册一个应用程序,以便每个令牌都与特定域绑定。因此,如果您使用的API具有相同的逻辑,则使用的令牌将绑定到您服务器的域(specificpromotions.com),因此,为了从不同的服务器(即不同的域)使用它,您将需要使用单独的令牌。
然而,我尝试执行您的脚本,并且没有问题以完全相同的格式从api获取数据。
因此,身份验证系统中肯定没有域绑定。因此,我认为您将不得不检查您的系统范围配置以找出curl无法工作的原因。

Token没有绑定到任何域。我在这一行中添加了token curl_setopt($ch, CURLOPT_USERPWD)。 - Vinie
我已经成功地执行了你的脚本,没有出现任何错误。我已经编辑了我的上面的评论。 - Dimos

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接