我正在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发送我的数据并且它有效。所以它真的可能是我的卷曲设置。
我做错了什么? 任何帮助都非常感谢。谢谢!
答案 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);
现在它正在工作,我能够保存我在数据库中收到的数据。谢谢大家的帮助!