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 目之所及皆是回憶。

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