laravel composer 融云im即时通信

laravel7使用composer开发融云im即时通信

开发环境

包管理:Composer
PHP框架:Laravel7
融云IM:V3.0

需要做的准备

本文档适合有一些PHP基础的同学,融合第三方sdk(这里采用融云IM)

  1. composer
  2. php框架采用laravel7(5.4以上的版本都可以,尝个鲜才用了最新的 7)
  3. 融云IM账号,并申请测试APP
  4. 在这里插入图片描述

开始开发

0、注意本文是建立在,已经安装好laravel框架和composer包管理的基础上进行操作,下文不在赘述:
1、进入到laravel项目根目录,使用composer安装依赖(这里使用官方依赖,不建议使用任何第三方封装的依赖)

composer require rongcloud/php-sdk dev-master

等待安装完成,可能遇到网络问题,注意更换源。完成后会在composer.json文件中多一些信息如图:
在这里插入图片描述
2、检查sdk文件会在根目录的vendor目录下多出一个rongcloud文件夹
在这里插入图片描述
3、执行composer update 使安装的依赖生效

composer update

4、创建Controller引入使用
在这里插入图片描述

<?php


namespace App\Http\Controllers\Home;

use App\Exceptions\ApiException;
use App\Helpers\ApiResponse;
use App\Http\Requests\ImRequest;
use Illuminate\Support\Facades\Log;


class ImController extends HomeBaseController
{
    use ApiResponse;

    private $APP_URL = 'http://api-cn.ronghub.com';
    private $APP_KEY = 'x18ywvqfx5vwc';
    private $APP_SECRET = 'XDOWnK7wNW';

    protected $request;


    public function __construct(ImRequest $request)
    {
        $this->request = $request;
    }


    /*
     * 获取用户token并注册
     */
    public function register()
    {
        try {
            //接收app传过来的参数
            $user_id = $this->request->get('userId');
            $username = $this->request->get('name');
            $head_pic = $this->request->get('portraitUri');

            //拼接融云的网址和要访问的方法  例子:http://api-cn.ronghub.com/user/getToken.json
            $url = config('app.im.url') . '/user/getToken.json';

            //融云需要参数
            $data = 'userId=' . $user_id . '&name=' . $username . '&portraitUri=' . $head_pic;

            return getRongClound($url, $data);
        } catch (ApiException $exception) {
            Log::error($exception->getMessage());
            return $this->failed('400', '即时通讯网络故障');
        }
    }


}

我封装的getRongClound 函数放到了 laravel的帮助函数里,如果对帮助函数不熟悉的可以直接拿出来放到controller里方便调用,我把代码贴出来自行修改调用方式即可

/*
     *  curl方式调用融云api
     *
     * @param $url api地址
     * @param $postData 传递数据
     *  $url 开发环境默认是 http://api-cn.ronghub.com
     */
    function getRongClound($url = "http://api-cn.ronghub.com", $data = "")
    {
        $app_key = config('app.im.app_key');//这里写你申请到的app-key
        $secret = config('app.im.secret');//同理,写你申请到的secret
        //参数初始化
        $nonce = mt_rand(); // 获取随机数。
        $timeStamp = time();// 获取时间戳。
        $signature = sha1($secret . $nonce . $timeStamp);
        $httpHeader = array(
            'App-Key:' . $app_key, //	平台分配
            'Nonce:' . $nonce, //	随机数
            'Timestamp:' . $timeStamp, //	时间戳
            'Signature:' . $signature, //	签名
            'Content-Type: application/x-www-form-urlencoded',
        );
        // 初始化curl
        $ch = curl_init();
        // 设置你需要抓取的URL
        curl_setopt($ch, CURLOPT_URL, $url);
        // post提交方式
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
        // 设置cURL 参数,要求结果保存到字符串中还是输出到屏幕上。
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        // 设置header
        curl_setopt($ch, CURLOPT_HEADER, false);
        // 增加 HTTP Header(头)里的字段
        curl_setopt($ch, CURLOPT_HTTPHEADER, $httpHeader);
        curl_setopt($ch, CURLOPT_TIMEOUT, 30);
        // 终止从服务端进行验证
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        // 运行curl
        $data = curl_exec($ch);
        // 关闭URL请求
        curl_close($ch);
        return $data;
    }

通过postman模拟访问

在这里插入图片描述
测试参数为:
http://v5.com/api/home/getUserToken?userId=2&name=wangyanlin2&portraitUri=https://qlogo3.store.qq.com/qzone/916684310/916684310/100?1531812249
注意:v5.com是我自己模拟用的,改成你自己的

查看返回值

{"code":200,"userId":"2","token":"[email protected];9dcv.cn.rongcfg.com"}

报错的话会有具体提示信息,这里就不写了。如还有不懂得可以私信博主。
-by 目之所及皆是回忆。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章