我有一个AngularJS应用程序我试图发布消息。我成功地能够登录用户,获取访问令牌,并确保我在Yammer的JavaScript起源中拥有自己的域名。
但是,每当我尝试发布消息时,都会收到以下错误:
奇怪的是当它执行预检时似乎没问题,但是由于错误状态我无法弄清楚为什么它没有回到CORS标题中,因为我已经在Yammer客户端区域注册了。
以下是发布的代码:
$scope.YammerPost = function (Yammer) {
var _token = Yammer.access_token.token;
var config = {
headers: {
'Authorization': 'Bearer ' + _token
}
};
$http.post('https://api.yammer.com/api/v1/messages.json', { body: 'blah blah', group_id: XXXXXXX }, config);
}
我通过点击按钮在视图中调用该范围变量。
以下是我用来签署用户的逻辑:
function checkYammerLogin() {
$scope.Yammer = {};
yam.getLoginStatus(
function (response) {
if (response.authResponse) {
$scope.Yammer = response;
console.dir(response); //print user information to the console
}
else {
yam.platform.login(function (response) {
if (response.authResponse) {
$scope.Yammer = response;
console.dir(response);
}
});
}
}
);
}
答案 0 :(得分:0)
我最终找到了问题。
由于某些奇怪的原因,每次我尝试使用$ http帖子时,它都会包含来自AD的Auth令牌(使用Azure AD进行身份验证的应用)。
我最终在单击按钮时在我的Angular范围函数中使用了jQuery,它可以控制请求的标题。
$.ajax({
url: 'https://api.yammer.com/api/v1/messages.json',
type: 'post',
data: {
body: 'this is a test from jQuery using AngularJS',
group_id: <group_id>
},
headers: {
'Authorization': _token
},
dataType: 'json',
success: function (data) {
console.info(data);
}
});
修正了问题,我现在可以发帖了。
如果有人发现这种做法存在任何问题,请告诉我,对于角色
仍然有点新意