卷曲不工作,但也没有给出任何错误

时间:2018-05-29 11:03:21

标签: php codeigniter curl

我正在Globe Labs API发送短信。但在我发送短信之前,我想要发送短信的手机号码需要订阅,这样我就可以获得用于发送短信的access_token

订阅有2个选项 - 通过短信或通过网络表单。我能够毫无问题地使用第一个选项。但我不能让第二种选择有用。

根据documentation,在订户键入页面上收到的确认图钉并单击确认按钮以授权订户后,该页面将被重定向到我的应用程序的redirect_uri,并且代码参数将通过(通过GET)传递给它。

这是我无法使其发挥作用的部分:

  

要获取访问令牌,您需要通过https://developer.globelabs.com.ph/oauth/access_token以'app_id','app_secret'和'code'作为参数执行POST请求。然后,参数'access_token'和'subscriber_number'将作为响应返回到您的重定向URI。

这是我的代码:

$app_id = '<my_app_id>';
$app_secret = '<my_app_secret>';

$content = array(
    'app_id' => $app_id,
    'app_secret' => $app_secret,
    'code' => $this->input->get('code')
);
$url = 'http://developer.globelabs.com.ph/oauth/access_token';

$this->post_to_url($url, $content);

function post_to_url($url, $data) {
   $fields = '';
   foreach($data as $key => $value) { 
      $fields .= $key . '=' . $value . '&'; 
   }
   rtrim($fields, '&');

   $post = curl_init();

   curl_setopt($post, CURLOPT_URL, $url);
   curl_setopt($post, CURLOPT_POST, count($data));
   curl_setopt($post, CURLOPT_POSTFIELDS, $fields);
   curl_setopt($post, CURLOPT_RETURNTRANSFER, 1);

   $result = curl_exec($post);

   curl_close($post);
   if(!$result){
        die('Error: "' . curl_error($post) . '" - Code: ' . curl_errno($post));
    } else {
        $this->Sms_Api_model->save_subscriber_data();
    }
}

这是我的重定向网址:http://api.forexcargo.us/sms_api/globelabs_api?code=[code]

结果我得到了:

  

错误:“” - 代码:

修改

我尝试使用表单并通过方法POST发送我的数据并且它有效。所以它真的可能是我的卷曲设置。

我做错了什么? 任何帮助都非常感谢。谢谢!

1 个答案:

答案 0 :(得分:0)

抱怨成为卷发的新手。显然,我必须添加以下代码才能查看代码中的错误,因为我使用的URL已禁用错误检查:

error_reporting(-1);
ini_set('display_errors', 1);
set_time_limit(0);

我的新代码:

function do_post_request($post_data)
{
    error_reporting(-1);
    ini_set('display_errors', 1);
    set_time_limit(0);
    $url = 'https://developer.globelabs.com.ph/oauth/access_token';

    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);

    // execute!
    $response = curl_exec($ch);

    // close the connection, release resources used
    curl_close($ch);

    // do anything you want with your response
    if($this->json_validator($response) == 1){
        $decode_data = json_decode($response, true);

        $post_data_arr = array('access_token' => $decode_data['access_token'], 'subscriber_number' => $decode_data['subscriber_number']);

        $this->Sms_Api_model->save_subscriber_data($post_data_arr);
        //var_dump(http_response_code(200));
    }
}

$content = [
    'app_id' => $app_id,
    'app_secret' => $app_secret,
    'code' => $this->input->get('code')
    ];

$post_request = $this->do_post_request($content);

现在它正在工作,我能够保存我在数据库中收到的数据。谢谢大家的帮助!