# 根据uid获取user\_token
## API文档
### 用户信息变更接口地址
```
<pre class="calibre26">
```
https://[独立部署OSX后端域名]/commonapi/user/getUserTokenByUid?
```
```
#### 输入参数(Get请求方式传参)
参数 是否必须 参数类型 限制长度 参数说明 user\_token 是 string 255 用户唯一性标识 appKey 是 string 255 接口appKey,应用的唯一标识 endtimestamp 是 String 20 请求有效期,截止有效时间。1970-01-01开始的时间戳,秒为单位。 sign yes string 255 MD5签名,详见 [【签名规则】](http://oa.xiangtian.ren/index.php?mod=corpus&op=list&cid=58#fid_619)#### 用户信息变更接口地址示例
```
<pre class="calibre26">
```
http://osxbenew.demo.opensns.cn/commonapi/user/userInfoChanged?&user_token=14359234985&endtimestamp=1520559858&appKey=testappKey&sign=49b12bc5579a2a2a4652a68cd53c1e5e
```
```
#### 接口返回json格式示例
\> **json格式中主要包含data字段,data字段下是user\_token、userInfo 分别保存了用户唯一标识以及用户信息**
```
<pre class="calibre26">
```
{
"code":200,
"msg":"ok",
"data":{
'user_token':string,//用户token
'uid':uid
}
}
```
```
```
<pre class="calibre26">
```
{
"code":200,
"msg":"error",
"data":"不存在用户token"
}
```
```
### 注意事项
1. OSX用户信息变更接口url经过签名,**该url地址5分钟失效,请务必在生成地址后立即使用**
2. **appSecrect** 是OSX短说签名验证的关键密钥,**切勿**作为参数加入免登URL,否则将导致appSecrect泄露,由此造成的损失OSX短说概不负责。
#### php代码示例
```
<pre class="calibre26">
```
/**
* 测试生成用户信息变更接口地址
* 用户信息变更接口地址涉及到的参数包含
* $user_token,$appKey,$appSecret,$endtimestamp等参数
*/
$appKey = 'AppKey';//填写自己应用的appKey
$appSecret ='AppSecret';//填写自己应用的AppSecret
$endtimestamp = time()+5*60;//当前时间+5分钟,5分钟有效期,单位秒
$user_token = '11132436534';//开发者服务端系统用户唯一标识
$url = "http://osxbenew.demo.opensns.cn/commonapi/user/userInfoChanged?";
$url = $url.'user_token='.$user_token.'&endtimestamp='.$endtimestamp.'&appKey='.$appKey;
//用于签名的数组
$sign_array=[
'endtimestamp'=>$endtimestamp,
'user_token'=>$user_token,
'appKey'=>$appKey,
'appSecret'=>$appSecret
];
//数组按键名升序排列处理后['appKey'=>$appKey,'appSecret'=>$appSecret,'endtimestamp'=>$endtimestamp,'user_token'=>$user_token]
ksort($sign_array);
//一维数组转字符串,用''拼接。等价于$appKey.$appSecret.$endtimestamp.$user_token
$sign_before_str = implode('',$sign_array);
//通过MD5加密成sign
$sign=md5($sign_before_str);
//拼接成最终的用户信息变更通知API
$userInfoChanged_url = $url.'&sign='.$sign;
//接下来通过curl通知OSX用户信息有变更
$ch = curl_init();// 初始化一个新会话
curl_setopt($ch, CURLOPT_URL, $userInfoChanged_url);// 设置要求请的url
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
try {
// 执行CURL请求
$output = curl_exec($ch);
// 关闭CURL资源
curl_close($ch);
$output=json_decode($output,true);
if($output['msg']=='ok'){
return true;//用户信息更新成功
}else{
return false;//用户信息更新失败,失败原因:$output['data']
}
} catch (\Exception $e) {
return false;//用户信息更新失败,失败原因:$e->getMessage()
}
```
```