当驱动程序是api时,下面的代码工作正常。然后我创建了一个新项目并将驱动程序更改为护照。
现在,我总是收到错误:未经授权。我可以确认请求标头在浏览器中有授权令牌代码。 请点击下面的图片,然后点击缩放以查看质量更好的图片。
我在下面的代码中遗漏了什么吗?如果您需要更多信息,请与我们联系。
bootstrap.js
<select>
使用Web socket.io
发布消息的代码import Echo from 'laravel-echo'
window.Echo = new Echo({
broadcaster: 'socket.io',
host: window.location.hostname + ':6001',
auth: {
headers: {
Authorization: 'Bearer' + localStorage.getItem("token")
}
}
});
当最后一行代码运行(var config = {
headers : {
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + localStorage.getItem('token')
}
};
var request = {
"channel": "private-Send-Message-Channel." + message.Sent_To,
"name": "MessengerEvent",
"data": {
"msg": message
},
"socket_id": socketId
};
var url = "http://localhost:6001/apps/786d1c1c820025f4/events?auth_key=be1699f0101880f673fdff7ff203334f";
axios.post(url, JSON.stringify(request), this.config).then(response => {
//success callback
});
)时,它会给出403,未经授权的异常。
我可以确认标头中是否存在令牌。
更新 - 1
我有两个示例项目。一个用driver = api,另一个用driver = passport。当我使用驱动程序:api时,没有问题。上述问题仅适用于driver = passport。
答案 0 :(得分:-1)
您是否遵守了护照文件:https://laravel.com/docs/5.6/passport?
为了获得OAuth身份验证,除了不记名令牌之外,您还需要更多身体参数。
{
"grant_type":"password",
"client_id":"CLIENT_ID",
"client_secret":"YOUR_SECRET",
"username":"USERNAME",
"password":"PASSWORD",
"scope":""
}