我一直在使用torii插件来通过linkedin进行身份验证。
我能够正确获取授权码,但在此官方教程之后无法获取访问令牌:
如果我按照此选项操作,则会收到以下错误:
XMLHttpRequest无法加载https://linkedin.com/uas/oauth2/accessToken?grant_type=authorization_code&c ...& redirect_uri = REDIRECT_URI& client_id = CLIENT_ID& client_secret = CLIENT_SECRET。请求的资源上不存在“ Access-Control-Allow-Origin ”标头。因此,不允许原点'my-host.com:4200'访问。
linkedInAccessToken: function(authenticationCode){
return new Ember.RSVP.Promise(function (resolve, reject) {
Ember.$.ajax({
type: "GET",
url: "https://linkedin.com/uas/oauth2/accessToken?grant_type=authorization_code&code="+ authenticationCode +"&redirect_uri=REDIRECT_URI&client_id=CLIENT_ID&client_secret=CLIENT_SECRET",
success: function (response) {
console.log("ACCESS_TOKEN" + data.access_token);
resolve(data);
},
error: function (request, textStatus, error) {
console.log(error);
reject(error);
}
});
});
},
如果我按照其他选项,我会收到此错误:
拒绝从'https://linkedin.com/uas/oauth2/accessToken?grant_type=authorization_code&c ... llback& callback = jQuery1113038602466485463083_1445461451847& _ = 1445461451848'执行脚本,因为其 MIME类型('application / json')不可执行,并且严格MIME类型检查已启用。
linkedInAccessToken: function(authenticationCode){
return new Ember.RSVP.Promise(function (resolve, reject) {
Ember.$.ajax({
type: "GET",
url: "https://linkedin.com/uas/oauth2/accessToken?grant_type=authorization_code&code="+ authenticationCode +"&redirect_uri=REDIRECT_URI&client_id=CLIENT_ID&client_secret=CLIENT_SECRET&callback=jsonpcallback",
dataType: 'jsonp',
success: function (response) {
console.log("ACCESS_TOKEN" + data.access_token);
resolve(data);
},
error: function (request, textStatus, error) {
console.log(error);
reject(error);
}
});
});
},
jsonpcallback: function(data){
},
这最后一个选项返回网络选项卡上的json,但由于这个问题,我无法处理它。
LinkedIn OAuth2只返回json,这就是我使用'jsonp'时遇到问题的原因。 另一方面它也不是cors,这就是我在第一个例子中遇到问题的原因。
你有什么想法帮我解决这个问题吗?
谢谢:)
答案 0 :(得分:1)
前几天我遇到了这个问题。如果您通过torii和oauth linkedin API进行授权,则需要将授权代码传递给后端并让它处理交换。
除非您使用带有linkedin的JavascriptSDK API,否则他们不允许跨源请求。