腾讯云即时通讯IM 公共整合

近日做了一个即时通讯相关的社交项目。

该项目集成了腾讯云的即时通讯IM。

这其中借鉴了 克洛克达尔丶的博客,地址:https://www.cnblogs.com/chenggege/p/8126475.html

因为大大用的文档可能比较早了一些,现在有些改动,

对应的config 配置相关

    #腾讯云即时通讯IM相关配置
    'tencentim' => [
        'sdkappid'   => '#####',  #应用 sdkappid 
        'key'        => '#####',  #应用秘钥
        'identifier' => '#####',  #应用管理员
    ],

 

生成UserSig 接口可使用:腾讯云应用生成 UserSig

然后就是调用封装的对应类库咯代码附上:

<?php

#腾讯云IM 相关
#20200810
#11:25

namespace app\index\controller;

use think\Controller;
use tencent\TLSSigAPIv2;

class Tencent extends Controller
{
    /**
    * 创建UserSig
    * @param $username 用户账号
    */
    public function createUserSig($identifier){

        if(!$identifier){
            $identifier = config('txyconfig.identifier');
        }

        $key = config('txyconfig.key');
        $sdkappid = config('txyconfig.sdkappid');
        $api = new TLSSigAPIv2($sdkappid,$key);

        $sig = $api->genSig($identifier); 
        return $sig;
    }

    #测试使用
    #拉取资料接口
    #示例:https://console.tim.qq.com/v4/profile/portrait_get?sdkappid=88888888&identifier=admin&usersig=xxx&random=99999999&contenttype=json
    public function getuserinfo()
    {
        $Interface = 'profile/portrait_get';

        $options = [
            'To_Account' => ['65986725'],
            'TagList' => [
                'Tag_Profile_IM_Nick'
            ]
        ];
        $return = $this->interfaces($options,$Interface);
    }

    /**
    * 腾讯云通信公共接口     
    * @param array $options['Nick'] 昵称
    * @param array $options['FaceUrl'] 头像url
    * @param str $Interface 腾讯接口地址例如(registration_service/register_account_v1)    
    */
    public function interfaces($options,$Interface)
    {

        $usersig = $this->createUserSig();

        $optionStr = "usersig=".$usersig."&identifier=".config('txyconfig.identifier')."&sdkappid=".config("txyconfig.sdkappid")."&random=".$this->returnRandom()."&contenttype=json";
        
        $url = "https://console.tim.qq.com/v4/".$Interface."?".$optionStr;
      
        $result = $this->postCurl ( $url, $options);
        
        $info = json_decode($result,true);
        $info['usersig'] = $usersig;

        return $info;
    }

    /**
     * CURL Post发送数据
     *
     * @param $url 地址
     * @param $option 参数数据
     * @param $header 消息头
     * @param $type 发送方式
     */
    private function postCurl($url, $option, $header = 0, $type = 'POST') {
        $curl = curl_init (); // 启动一个CURL会话
        curl_setopt ( $curl, CURLOPT_URL, $url ); // 要访问的地址
        curl_setopt ( $curl, CURLOPT_SSL_VERIFYPEER, FALSE ); // 对认证证书来源的检查
        curl_setopt ( $curl, CURLOPT_SSL_VERIFYHOST, FALSE ); // 从证书中检查SSL加密算法是否存在
        curl_setopt ( $curl, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0)' ); // 模拟用户使用的浏览器
        if (! empty ( $option )) {
            $options = json_encode ( $option );
            curl_setopt ( $curl, CURLOPT_POSTFIELDS, $options ); // Post提交的数据包
        }
        curl_setopt ( $curl, CURLOPT_TIMEOUT, 30 ); // 设置超时限制防止死循环
        curl_setopt ( $curl, CURLOPT_RETURNTRANSFER, 1 ); // 获取的信息以文件流的形式返回
        curl_setopt ( $curl, CURLOPT_CUSTOMREQUEST, $type );
        $result = curl_exec ( $curl ); // 执行操作
        
        curl_close ( $curl ); // 关闭CURL会话
        return $result;
    }

    /**
    * 返回随机数 
    */
    public function returnRandom(){
        return rand("111111111","999999999");
    }


    

}

 

代码主体还是使用的原来大佬的相关数据

不过大佬使用的是TP3.2  修改了一部分代码,改为TP5使用

以上即是本篇内容

 

2020年08月10号

 

posted @ 2020-08-10 17:41  御风琊穹  阅读(701)  评论(0编辑  收藏  举报

春风十里,我喜欢你。可是你喜欢的人不喜欢你,哈哈....
人来人往,莫失莫忘。最终还是选择淡忘于回忆之中...
落日余晖,待你而归。但你终究不是为我而归..
一米阳光,温暖安放;心若向阳,无谓悲伤;轻安喜乐,次第花开 。