经过测试用一下方式设置 header 参数,可以成功获取数据
curl 参数设置如下:
curl请求方法
每登录一次返回给接口一个token,这个token会存储在单独的表里,每次APP关系到用户的 *** 作都必须要携带token,根据token来解码出是哪个用户。这种方法也可以做其他设备登录踢出。一般都是这么个做法。token的生成类似cookie的密码加密,我是这么做的,当然有很多种方法,只要你能加密能解密就行。下面是phpcms里面的一个经典的方法,我一般拿来做cookie加密,制作token来使用。
<?php/**
* 字符串加密、解密函数
*
* @param string $txt 字符串
* @param string $operation ENCODE为加密,DECODE为解密,可选参数,默认为ENCODE,
* @param string $key 密钥:数字、字母、下划线
* @param string $expiry 过期时间
* @return string
*/
function sys_auth($string, $operation = 'ENCODE', $key = '', $expiry = 0) {
$ckey_length = 4
$key = md5($key != '' ? $key : C('COOKIE_AUTH_KEY'))
$keya = md5(substr($key, 0, 16))
$keyb = md5(substr($key, 16, 16))
$keyc = $ckey_length ? ($operation == 'DECODE' ? substr($string, 0, $ckey_length): substr(md5(microtime()), -$ckey_length)) : ''
$cryptkey = $keya.md5($keya.$keyc)
$key_length = strlen($cryptkey)
$string = $operation == 'DECODE' ? base64_decode(strtr(substr($string, $ckey_length), '-_', '+/')) : sprintf('%010d', $expiry ? $expiry + time() : 0).substr(md5($string.$keyb), 0, 16).$string
$string_length = strlen($string)
$result = ''
$box = range(0, 255)
$rndkey = array()
for($i = 0 $i <= 255 $i++) {
$rndkey[$i] = ord($cryptkey[$i % $key_length])
}
for($j = $i = 0 $i < 256 $i++) {
$j = ($j + $box[$i] + $rndkey[$i]) % 256
$tmp = $box[$i]
$box[$i] = $box[$j]
$box[$j] = $tmp
}
for($a = $j = $i = 0 $i < $string_length $i++) {
$a = ($a + 1) % 256
$j = ($j + $box[$a]) % 256
$tmp = $box[$a]
$box[$a] = $box[$j]
$box[$j] = $tmp
$result .= chr(ord($string[$i]) ^ ($box[($box[$a] + $box[$j]) % 256]))
}
if($operation == 'DECODE') {
if((substr($result, 0, 10) == 0 || substr($result, 0, 10) - time() > 0) && substr($result, 10, 16) == substr(md5(substr($result, 26).$keyb), 0, 16)) {
return substr($result, 26)
}else{
return ''
}
}else{
return $keyc.rtrim(strtr(base64_encode($result), '+/', '-_'), '=')
}
}
?>
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)