Пример #1
0
 /**
  * 获取发送短信的令牌
  * @param Boolean  $flag  是否请求新令牌:true-请求(不管本地Redis是否保存令牌)  false-不请求(首先从本地Redis中取,没有的话再向服务器请求)
  * @return String 令牌
  */
 private static function getAccessToken($flag)
 {
     if (!$flag) {
         // 首先从本地Redis中取
         $accesstoken = MyRedis::get('sms.accesstoken');
         if ($accesstoken) {
             return $accesstoken;
         }
     }
     $url = "https://oauth.api.189.cn/emp/oauth2/v3/access_token";
     $postData['grant_type'] = 'client_credentials';
     $postData['app_id'] = YsSmSService::APPID;
     $postData['app_secret'] = YsSmSService::APPSECRET;
     foreach ($postData as $key => $value) {
         $post[] = $key . '=' . $value;
     }
     $curl = new t\Curl();
     $resultJson = $curl->post($url, implode('&', $post));
     $resObj = json_decode($resultJson);
     $expiers = intval($resObj->expires_in);
     $accesstoken = $resObj->access_token;
     if ($expiers > 0) {
         MyRedis::set('sms.accesstoken', $accesstoken, $expiers);
     }
     return $accesstoken;
 }
Пример #2
0
 /**
  * 获取超级用户的用户凭证,并将用户凭证保存到Redis中
  * 超级用户ID:-1(程序内部推送消息需要用到)
  * 店员版:userid = -1  usertoken = GZSDYSBANGPHARMA      user.info:$userId         token.to.userid:$userToken
  * 大众版:userid = -1  usertoken = GZSDYSBANGPUBLIC      user.info.pub:$userId     token.to.userid.pub:$userToken
  * 工业版:userid = -1  usertoken = GZSDYSBANGINDUST      user.info.ind:$userId     token.to.userid.ind:$userToken
  * @return false:生成失败   其它值:$userToken 用户凭证
  */
 protected function getSuperUserToken()
 {
     $userId = -1;
     // 超级用户ID:-1(店员版程序内部推送消息需要用到)
     $userToken = p\MyRedis::hashGet("user.info:{$userId}", 'usertoken');
     if (!$userToken) {
         // 不存在才生成
         //$userToken = $this->getUserToken($userId,-1);
         // 直接定义16位token(app用户登陆生成token是32位)
         $userToken = 'GZSDYSBANGPHARMA';
         // 店员版后台推送专用TOKEN
         p\MyRedis::set("token.to.userid:{$userToken}", $userId);
         // 保存到Redis中
         $userInfo = array();
         $userInfo['usertoken'] = $userToken;
         $userInfo['logintype'] = 0;
         // 0:表示程序内部登录,非用户登录
         $userInfo['logintime'] = time();
         // 登录时间
         $this->saveUserInfoToRedis($userId, $userInfo);
     }
     return $userToken;
 }