# 根據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()
}
```
```