Twilio Twilsock connection closed by server

一个人想着一个人 提交于 2019-12-11 05:32:58

问题


I'm trying to integrate with Twilio's IP messaging service and I'm attempting to follow their guide here: https://www.twilio.com/docs/api/ip-messaging/guides/identity

I'm using AngularJS front end with Node.JS backend.

Here's my backend call, which executes fine:

getTwilioToken: function (request, response) {

    var appName = 'AppTwilio';
    var identity = request.body.id;
    var deviceId = request.body.device;

    // Create a unique ID for the client on their current device
    var endpointId = appName + ':' + identity + ':' + deviceId;

    // Create a "grant" which enables a client to use IPM as a given user,
    // on a given device
    var ipmGrant = new IpMessagingGrant({
        serviceSid: "[MY_PROD_SID]",
        endpointId: endpointId
    });

    // Create an access token which we will sign and return to the client,
    // containing the grant we just created
    var token = new AccessToken(
        "[MY PROD ACCOUNT SID]",
        "[MY PROD ACCOUNT SID]",
        "[Prod Auth Token]"
    );
    token.addGrant(ipmGrant);
    token.identity = identity;

    // Serialize the token to a JWT string and include it in a JSON response
    response.send({
        identity: identity,
        token: token.toJwt()
    });
}

Here's my AngularJS stuff:

This is in my MessagingService this executes fine

    getTwilioToken: function (userid, devicekey) {
        return $http.post(apiUrl + '/getTwilioToken', { id: userid, device: devicekey }).then(function (response) {
            deferred.resolve(response.data);
            return deferred.promise;
        });
    }

In my controller I have a button wired up to this:

$scope.getTwilioToken = function () {

    var userid = uuid.v4(); //just creating a dummy id for now
    var device = uuid.v4(); //just creating dummy device for now

    MessagingService.getTwilioToken(userid, device).then(function (response) {
        $scope.accessManager = new Twilio.AccessManager(response.token);
        $scope.messagingClient = new Twilio.IPMessaging.Client($scope.accessManager);

    });

}

Here's my response i'm getting back from my server/twilio that includes the token:

{
    "identity": "1f778bb6-2b3f-4008-9697-4733cf7870c5",
    "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiIsImN0eSI6InR3aWxpby1mcGE7dj0xIn0.eyJqdGkiOiJBQzg1ZTNkYTYzZjNiY2MxNTY3ODdjMDA5NzdjZTBhNDA5LTE0NjM2NzM0MDYiLCJncmFudHMiOnsiaWRlbnRpdHkiOiIxZjc3OGJiNi0yYjNmLTQwMDgtOTY5Ny00NzMzY2Y3ODcwYzUiLCJpcF9tZXNzYWdpbmciOnsic2VydmljZV9zaWQiOiJJUzMyNjhlN2NhYWYxZDRlYTk5MGM5NWZkMTRkNWQ0NDM0IiwiZW5kcG9pbnRfaWQiOiJSaXNlclVUd2lsaW86MWY3NzhiYjYtMmIzZi00MDA4LTk2OTctNDczM2NmNzg3MGM1Ojc4NzcxNDc3LWJmZjktNDU3NC04Njc4LWQwOGZiM2Q0YjcxMCJ9fSwiaWF0IjoxNDYzNjczNDA2LCJleHAiOjE0NjM2NzcwMDYsImlzcyI6IkFDODVlM2RhNjNmM2JjYzE1Njc4N2MwMDk3N2NlMGE0MDkiLCJzdWIiOiJBQzg1ZTNkYTYzZjNiY2MxNTY3ODdjMDA5NzdjZTBhNDA5In0.XIUAGoyO8EtKZOfzbRe4qo-1wXddiMGswidbakUE2ZA"
}

I'm getting these errors in the browser at that point:

twilio-ip-messaging.min.js:151 Twilsock connection closed by server []i._onSocketRejected @ twilio-ip-messaging.min.js:151x.create.callbacks.onsocketRejected @ twilio-ip-messaging.min.js:151e.doCallback @ twilio-ip-messaging.min.js:235e.afterThisEvent @ twilio-ip-messaging.min.js:235e.afterEvent @ twilio-ip-messaging.min.js:235transition @ twilio-ip-messaging.min.js:235(anonymous function) @ twilio-ip-messaging.min.js:235r.onmessage @ twilio-ip-messaging.min.js:151 cds.twilio.com/v2/Streams:1 POST https://cds.twilio.com/v2/Streams 403 (Forbidden)

twilio-ip-messaging.min.js:150 IPMSG: failed to create session Object {status: 403, description: "Forbidden", body: "{"message":"Access forbidden","status":403}"}(anonymous function) @ twilio-ip-messaging.min.js:150s @ twilio-ip-messaging.min.js:153(anonymous function) @ twilio-ip-messaging.min.js:153c @ twilio-ip-messaging.min.js:152Mutation (async)n @ twilio-ip-messaging.min.js:152(anonymous function) @ twilio-ip-messaging.min.js:152I @ twilio-ip-messaging.min.js:153P @ twilio-ip-messaging.min.js:153(anonymous function) @ twilio-ip-messaging.min.js:152o.onreadystatechange @ twilio-ip-messaging.min.js:151XMLHttpRequest.send (async)(anonymous function) @ twilio-ip-messaging.min.js:151w @ twilio-ip-messaging.min.js:153o @ twilio-ip-messaging.min.js:151l.post @ twilio-ip-messaging.min.js:151f.post @ twilio-ip-messaging.min.js:151i.post @ twilio-ip-messaging.min.js:149i.createStream @ twilio-ip-messaging.min.js:149i.initialize @ twilio-ip-messaging.min.js:150i @ twilio-ip-messaging.min.js:150(anonymous function) @ messagingController.js:32(anonymous function) @ angular.js:15961n.$eval @ angular.js:17229n.$digest @ angular.js:17045n.$apply @ angular.js:17337l @ angular.js:11572H @ angular.js:11778u.onload @ angular.js:11711XMLHttpRequest.send (async)(anonymous function) @ angular.js:11756m @ angular.js:11517g @ angular.js:11227(anonymous function) @ angular.js:15961n.$eval @ angular.js:17229n.$digest @ angular.js:17045n.$apply @ angular.js:17337(anonymous function) @ angular.js:25023n.event.dispatch @ jquery.min.js:3r.handle @ jquery.min.js:3 twilio-ip-messaging.min.js:153 Unhandled promise rejection Object {status: 403, description: "Forbidden", body: "{"message":"Access forbidden","status":403}"}(anonymous function) @ twilio-ip-messaging.min.js:153R @ twilio-ip-messaging.min.js:153(anonymous function) @ twilio-ip-messaging.min.js:153t.exports @ twilio-ip-messaging.min.js:152m.(anonymous function) @ twilio-ip-messaging.min.js:152_ @ twilio-ip-messaging.min.js:152v @ twilio-ip-messaging.min.js:152 twilio-ip-messaging.min.js:153 Unhandled promise rejection Object {status: 403, description: "Forbidden", body: "{"message":"Access forbidden","status":403}"}(anonymous function) @ twilio-ip-messaging.min.js:153R @ twilio-ip-messaging.min.js:153(anonymous function) @ twilio-ip-messaging.min.js:153t.exports @ twilio-ip-messaging.min.js:152m.(anonymous function) @ twilio-ip-messaging.min.js:152_ @ twilio-ip-messaging.min.js:152v @ twilio-ip-messaging.min.js:152 twilio-ip-messaging.min.js:153 Unhandled promise rejection Object {status: 403, description: "Forbidden", body: "{"message":"Access forbidden","status":403}"}(anonymous function) @ twilio-ip-messaging.min.js:153R @ twilio-ip-messaging.min.js:153(anonymous function) @ twilio-ip-messaging.min.js:153t.exports @ twilio-ip-messaging.min.js:152m.(anonymous function) @ twilio-ip-messaging.min.js:152_ @ twilio-ip-messaging.min.js:152v @ twilio-ip-messaging.min.js:152 twilio-ip-messaging.min.js:153 Unhandled promise rejection Object {status: 403, description: "Forbidden", body: "{"message":"Access forbidden","status":403}"}(anonymous function) @ twilio-ip-messaging.min.js:153R @ twilio-ip-messaging.min.js:153(anonymous function) @ twilio-ip-messaging.min.js:153t.exports @ twilio-ip-messaging.min.js:152m.(anonymous function) @ twilio-ip-messaging.min.js:152_ @ twilio-ip-messaging.min.js:152v @ twilio-ip-messaging.min.js:152 twilio-ip-messaging.min.js:153 Unhandled promise rejection Object {status: 403, description: "Forbidden", body: "{"message":"Access forbidden","status":403}"}(anonymous function) @ twilio-ip-messaging.min.js:153R @ twilio-ip-messaging.min.js:153(anonymous function) @ twilio-ip-messaging.min.js:153t.exports @ twilio-ip-messaging.min.js:152m.(anonymous function) @ twilio-ip-messaging.min.js:152_ @ twilio-ip-messaging.min.js:152v @ twilio-ip-messaging.min.js:152 twilio-ip-messaging.min.js:153 Unhandled promise rejection Object {status: 403, description: "Forbidden", body: "{"message":"Access forbidden","status":403}"}(anonymous function) @ twilio-ip-messaging.min.js:153R @ twilio-ip-messaging.min.js:153(anonymous function) @ twilio-ip-messaging.min.js:153t.exports @ twilio-ip-messaging.min.js:152m.(anonymous function) @ twilio-ip-messaging.min.js:152_ @ twilio-ip-messaging.min.js:152v @ twilio-ip-messaging.min.js:152


回答1:


Twilio developer evangelist here.

Looking at your error here:

twilio-ip-messaging.min.js:150 IPMSG: failed to create session Object {status: 403, description: "Forbidden", body: "{"message":"Access forbidden","status":403}"}(anonymous function) @ twilio-ip-messaging.min.js:150s

Suggests to me you're failing to authenticate, which means the generated identity and token are incorrect. Looking at your code I saw this:

var token = new AccessToken(
        "[MY PROD ACCOUNT SID]",
        "[MY PROD ACCOUNT SID]",
        "[Prod Auth Token]"
    );

Now, unless you've just used copied and pasted this wrong, you shouldn't be using your account SID twice. Your access token should be composed of the Account SID, API Key and API Secret. More like this:

var token = new AccessToken(
        "[MY PROD ACCOUNT SID]",
        "[API KEY]",
        "[API SECRET]"
    );

If you're unsure about how to get this information though, have a look at the Gather Account Information section on the JavaScript Quickstart.

Other than that your code looks fine, and I think the error will disappear when you make sure you're using the correct authentication tokens.

Hope this helps you



来源:https://stackoverflow.com/questions/37328494/twilio-twilsock-connection-closed-by-server

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!