【问题标题】:Twilio Twilsock connection closed by serverTwilio Twilsock 连接被服务器关闭
【发布时间】:2016-09-16 15:28:47
【问题描述】:

我正在尝试与 Twilio 的 IP 消息传递服务集成,并尝试在此处遵循他们的指南:https://www.twilio.com/docs/api/ip-messaging/guides/identity

我正在使用 AngularJS 前端和 Node.JS 后端。

这是我的后端调用,执行良好:

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()
    });
}

这是我的 AngularJS 内容:

这是在我的 MessagingService 中执行得很好

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

在我的控制器中,我有一个连接到此的按钮:

$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);

    });

}

这是我从服务器/twilio 返回的包含令牌的回复:

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

当时我在浏览器中遇到了这些错误:

twilio-ip-messaging.min.js:151 Twilsock 连接被服务器关闭 []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(匿名函数)@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(禁止)

twilio-ip-messaging.min.js:150 IPMSG: 未能创建会话对象 {status: 403, description: "Forbidden", body: "{"message":"Access denied","status":403 }"}(匿名函数)@twilio-ip-messaging.min.js:150s @twilio-ip-messaging.min.js:153(匿名函数)@twilio-ip-messaging.min.js:153c @twilio- ip-messaging.min.js:152Mutation (async)n @ twilio-ip-messaging.min.js:152(匿名函数)@ twilio-ip-messaging.min.js:152I @ twilio-ip-messaging.min。 js:153P@twilio-ip-messaging.min.js:153(匿名函数)@twilio-ip-messaging.min.js:152o.onreadystatechange@twilio-ip-messaging.min.js:151XMLHttpRequest.send(异步) (匿名函数)@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(匿名函数)@ messingController.js:32(匿名函数)@ 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)(匿名函数) @ angular.js:11756m @ angular.js:11517g @ angular.js:11227(匿名函数) @ angular.js:15961n。 $eval @ angular.js:17229n.$digest @ angular.js:17045n.$apply @ angular.js:17337(匿名函数) @ angular.js:25023n.event.dispatch @ jquery.min.js:3r.handle @jquery.min.js:3 twilio-ip-messaging.min.js:153 未处理的承诺拒绝对象{状态:403,描述:“禁止”,正文:“{“消息”:“禁止访问”,“状态”:403}“}(匿名函数) @ twilio-ip-messaging.min.js:153R @ twilio-ip-messaging.min.js:153(匿名函数) @ twilio-ip-messaging.min.js:153t.exports @ twilio-ip-messaging。 min.js:152m.(匿名函数)@twilio-ip-messaging.min.js:152_@twilio-ip-messaging.min.js:152v @twilio-ip-messaging.min.js:152 twilio-ip-messaging.min.js:153 未处理的承诺拒绝对象{状态:403,描述:“禁止”,正文:“{“消息”:“禁止访问”,“状态”:403}“}(匿名函数) @ twilio-ip-messaging.min.js:153R @ twilio-ip-messaging.min.js:153(匿名函数) @ twilio-ip-messaging.min.js:153t.exports @ twilio-ip-messaging。 min.js:152m.(匿名函数)@twilio-ip-messaging.min.js:152_@twilio-ip-messaging.min.js:152v @twilio-ip-messaging.min.js:152 twilio-ip-messaging.min.js:153 未处理的承诺拒绝对象{状态:403,描述:“禁止”,正文:“{“消息”:“禁止访问”,“状态”:403}“}(匿名函数) @ twilio-ip-messaging.min.js:153R @ twilio-ip-messaging.min.js:153(匿名函数) @ twilio-ip-messaging.min.js:153t.exports @ twilio-ip-messaging。 min.js:152m.(匿名函数)@twilio-ip-messaging.min.js:152_@twilio-ip-messaging.min.js:152v @twilio-ip-messaging.min.js:152 twilio-ip-messaging.min.js:153 未处理的承诺拒绝对象{状态:403,描述:“禁止”,正文:“{“消息”:“禁止访问”,“状态”:403}“}(匿名函数) @ twilio-ip-messaging.min.js:153R @ twilio-ip-messaging.min.js:153(匿名函数) @ twilio-ip-messaging.min.js:153t.exports @ twilio-ip-messaging。 min.js:152m.(匿名函数)@twilio-ip-messaging.min.js:152_@twilio-ip-messaging.min.js:152v @twilio-ip-messaging.min.js:152 twilio-ip-messaging.min.js:153 未处理的承诺拒绝对象{状态:403,描述:“禁止”,正文:“{“消息”:“禁止访问”,“状态”:403}“}(匿名函数) @ twilio-ip-messaging.min.js:153R @ twilio-ip-messaging.min.js:153(匿名函数) @ twilio-ip-messaging.min.js:153t.exports @ twilio-ip-messaging。 min.js:152m.(匿名函数)@twilio-ip-messaging.min.js:152_@twilio-ip-messaging.min.js:152v @twilio-ip-messaging.min.js:152 twilio-ip-messaging.min.js:153 未处理的承诺拒绝对象{状态:403,描述:“禁止”,正文:“{“消息”:“禁止访问”,“状态”:403}“}(匿名函数) @ twilio-ip-messaging.min.js:153R @ twilio-ip-messaging.min.js:153(匿名函数) @ twilio-ip-messaging.min.js:153t.exports @ twilio-ip-messaging。 min.js:152m.(匿名函数)@twilio-ip-messaging.min.js:152_@twilio-ip-messaging.min.js:152v @twilio-ip-messaging.min.js:152

【问题讨论】:

    标签: angularjs node.js twilio


    【解决方案1】:

    这里是 Twilio 开发者宣传员。

    在这里查看您的错误:

    twilio-ip-messaging.min.js:150 IPMSG: 未能创建会话对象 {状态:403,描述:“禁止”,正文:“{”消息“:”访问 禁止","状态":403}"}(匿名函数)@ twilio-ip-messaging.min.js:150s

    向我建议您未能通过身份验证,这意味着生成的身份和令牌不正确。查看您的代码,我看到了:

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

    现在,除非您刚刚使用了错误的复制和粘贴,否则您不应该使用您的帐户 SID 两次。您的访问令牌应由 Account SID、API Key 和 API Secret 组成。更像这样:

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

    如果您不确定如何获取此信息,请查看JavaScript Quickstart 上的收集帐户信息部分。

    除此之外,您的代码看起来还不错,而且我认为当您确保使用正确的身份验证令牌时错误会消失。

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 2021-11-30
      • 1970-01-01
      • 1970-01-01
      • 2017-08-10
      • 1970-01-01
      • 1970-01-01
      • 2013-10-21
      • 2018-12-09
      • 2018-05-29
      相关资源
      最近更新 更多