我被困在某個時刻。我想打到linkedin API(不使用任何軟件包)並獲取用戶的配置文件信息。使用流星JS撞擊LinkedIn API
所以爲此,我按照以下步驟操作: 1.打開linkedin API獲取授權碼 2.使用此授權碼獲取訪問令牌。 3.使用訪問令牌來獲取個人資料信息。
到目前爲止,我能夠獲得授權碼,但無法進一步處理。這裏是我的代碼:
這些只是爲了測試目的,所以在客戶端做所有事情。
我的模板
<template name="home">
<a href="#" class="callLinkedIn">get profile from linkedin</a>
</template>
我的助手
var clientId='XXXXX';
var secret = 'XXXXX';
var redirectUri = 'http%3A%2F%2Flocalhost%3A4000%2F_oauth%2Flinkedin%3Fclose';
var credentialToken = "RANDOMSTRING";
Template.home.events({
'click .callLinkedIn':function(event,template){
var scope = [];
var loginUrl =
'https://www.linkedin.com/uas/oauth2/authorization' +
'?response_type=code' + '&client_id=' + clientId +
'&redirect_uri=' + redirectUri +
'&scope=' + scope + '&state=' + credentialToken;
showPopup(loginUrl,function(err){
if(err){
console.log(err);
}
else{
console.log('success');
var params = {
'grant_type':'authorization_code',
'code':Session.get('code'),
'redirect_uri':redirectUri,
'client_id':clientId,
'client_secret':secret
};
HTTP.call('POST',"https://www.linkedin.com/uas/oauth2/accessToken", {
headers:{'Content-Type':'application/x-www-form-urlencoded'},
params:params
},
function(err,res){
if(err){
console.log(err);
}
else{
console.log(res);
}
});
}
})
}
})
function showPopup(url, callback, dimensions) {
var popup = openCenteredPopup(
url,
(dimensions && dimensions.width) || 650,
(dimensions && dimensions.height) || 331
);
var checkPopupOpen = setInterval(function() {
try {
var popupClosed = popup.closed || popup.closed === undefined;
} catch (e) {
return;
}
if (popupClosed) {
console.log(popup.document.URL);
var url = popup.document.URL;
var a1 = url.split('code=');
var a2 =a1[1].split('&');
Session.set('code',a2[0]);
clearInterval(checkPopupOpen);
callback();
}
}, 50);
}
function openCenteredPopup(url, width, height) {
var screenX = typeof window.screenX !== 'undefined'
? window.screenX : window.screenLeft;
var screenY = typeof window.screenY !== 'undefined'
? window.screenY : window.screenTop;
var outerWidth = typeof window.outerWidth !== 'undefined'
? window.outerWidth : document.body.clientWidth;
var outerHeight = typeof window.outerHeight !== 'undefined'
? window.outerHeight : (document.body.clientHeight - 22);
var left = screenX + (outerWidth - width)/2;
var top = screenY + (outerHeight - height)/2;
var features = ('width=' + width + ',height=' + height +
',left=' + left + ',top=' + top + ',scrollbars=yes');
var newwindow = window.open(url, 'Login', features);
if (newwindow.focus)
newwindow.focus();
return newwindow;
}
我得到的彈出與LinkedIn的用戶名和密碼。但是當我提供憑據並按「允許訪問」時,我在瀏覽器控制檯中收到此錯誤。
POST https://www.linkedin.com/uas/oauth2/accessToken XMLHttpRequest無法加載https://www.linkedin.com/uas/oauth2/accessToken。請求的資源上沒有「Access-Control-Allow-Origin」標題。因此不允許訪問Origin'http:// localhost:4000'。響應有HTTP狀態代碼400
以及在服務器上,我得到這個 無法從OAuth的查詢解析狀態:由於錯誤說沒有標頭叫'Access-Control-Allow-Origin'
,嘗試添加DC8ÄDF
嗨,我試過..仍然是給出相同的解決方案。我真的很想知道問題是什麼。任何想法,授權代碼持續多久?我在某個地方讀了20多年,但我沒有在linkedin文檔中看到它。是否因爲我的授權碼過期?但是我在創建它的那一刻起就調用它 – Juvenik
在修復頭文件後,您會收到完全相同的錯誤消息?我認爲認證碼不是問題。 – FullStack
是的,我在控制檯中得到相同的錯誤。你可以在你的系統中嘗試上面的代碼,並在控制檯中看到它。 – Juvenik