首页 > 解决方案 > Twilio - Laravel 问题 - 创建客户端需要凭据

问题描述

我收到以下错误

[2018-12-18 12:12:46] local.ERROR: 创建客户端需要凭据 {"exception":"[object] (Twilio\Exceptions\ConfigurationException(code: 0): 创建客户端需要凭据C:\wamp64\www\_javid\javid\vendor\twilio\sdk\Twilio\Rest\Client.php:157 的客户端)

我将包括下面的代码和我用来创建它的源代码。我想补充一下,前几天晚上一切正常。

今天,我只是添加了一个新函数来处理将消息保存到数据库。然后我开始收到上述错误。自然地,我恢复了我的更改,但仍然是同样的错误。

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;


use App\User;
use Illuminate\Support\Facades\Auth;
use JWTAuth;
use App\Item;
use Log;

use Twilio\Rest\Client;

class MessagingController extends Controller
{
    protected $client;

    public function __construct(Client $client){
        $this->client = $client;
    }


    /**
     * Show the form for creating a notification.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        return view('notifications.create');
    }


    public function sendMessage(request $request){
        $details = $request->only('membershipNumber', 'countryCode', 'message');

        $user = User::where('membership_number', $details['membershipNumber'])->with('mobile_number')->first();
        if(count($user)>0){
            $this->messageSaveToDatabase($details, $user);
            $this->messageSendToMobile($details, $user);
            $this->messageSendToEmail($details, $user);
            return response([
                'status' => 'success',
                'msg' => __('messages.success'),
                'response' => $details
               ], 200);
        } else {
            return response([
                'status' => 'error',
                'msg' => __('messages.error')
               ], 200);
        }

    }

    protected function messageSaveToDatabase($details, $user){

    }
    protected function messageSendToMobile($details, $user, $imageUrl = null){
        $lineBreak = "\n\n";
        $phoneNumber = $user->mobile_number->country_code.decrypt($user->mobile_number->number);

        $message = "Hi member #".$details['membershipNumber'].$lineBreak.
            $details['message'];

        $twilioPhoneNumber = config('services.twilio')['phoneNumber'];
        $messageParams = array(
            'from' => $twilioPhoneNumber,
            'body' => $message
        );
        if ($imageUrl) {
            $messageParams['mediaUrl'] = $imageUrl;
        }

        $this->client->messages->create(
            $phoneNumber,
            $messageParams
        );
    }
    protected function messageSendToEmail($details, $user){

    }
}

我检查了TWILIO_ACCOUNT_SIDand TWILIO_AUTH_TOKEN,这些都是正确的。

代码取自以下指南,我删除了订阅者部分。来自 Twilio 的指南

还有一件事,我在这里发现了以下内容这表明我需要做这样的事情$client = new Client($keySid, $keySecret, $accountSid);,但上面的指南并没有这样做,而且它也都是这样工作的。

任何帮助或建议都会很棒,我已经没有头发可以拔了:(

标签: laravel-5.7twilio-php

解决方案


经过更多的谷歌搜索和一些重新工作,我找到了一个可行的解决方案

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\User;
use Illuminate\Support\Facades\Auth;


use Twilio\Rest\Client;

class MessagingController extends Controller
{

    protected function messageSendToMobile($details, $message, $user, $imageUrl = null){
        $accountSid = env('TWILIO_ACCOUNT_SID');
        $authToken = env('TWILIO_AUTH_TOKEN');
        $twilioNumber = env('TWILIO_PHONE_NUMBER');
        $lineBreak = "\n\n";
        $to = $user->mobile_number->country_code.decrypt($user->mobile_number->number);
        $client = new Client($accountSid, $authToken);
        try {
            $client->messages->create(
                $to,
                [
                    "body" => $message,
                    "from" => $twilioNumber
                ]
            );
            Log::info('Message sent to ' . $twilioNumber);
        } catch (TwilioException $e) {
            Log::error(
                'Could not send SMS notification.' .
                ' Twilio replied with: ' . $e
            );
        }
    }
}

推荐阅读