2016-09-29 27 views
0

我正在嘗試使用ng2-cordova-oauth通過linkedin使用cordova進行登錄。但我發現試圖登錄時,這個錯誤:如何使用ng2-cordova-oauth連接到linkedin?

The redirect_uri does not match the registered value.

這是我的LinkedIn提供者對象:

private linkedinProvider: LinkedIn = new LinkedIn({ 
    clientId: "XXXX", 
    appScope: ["r_fullprofile"], 
    }); 

,這是我如何使用它:

this.cordovaOauth.logInVia(this.linkedinProvider).then(success => { 
     console.log("RESULT: " + JSON.stringify(success)); 
    }, error => { 
     console.log("ERROR: ", error); 
    }); 

問題是linkedin所要求的其他參數不可用,這裏在步驟2中提到的那些:https://developer.linkedin.com/docs/oauth2

我應該如何去添加它們,並使用它,Facebook的例子只有這些參數,可以當我嘗試添加任何LinkedIn的PARAMS我得到一個編譯錯誤:

const provider = new Facebook({ 
    clientId: string, 
    appScope?: string[], 
    redirectUri?: string, 
    responseType?: string, 
    authType?: string 
}); 

回答

0

LinkedIn的供應商應該看看像這樣:

private linkedinProvider: LinkedIn = new LinkedIn({ 
     clientId: client_id, 
     appScope: ["r_basicprofile","r_emailaddress"], 
     redirectUri: redirectUri, 
     responseType: responseType, 
     state: state 
    }); 

用的responseType總是等於 '代碼' 和redirectUri總是等於 'http://localhost/callback'。而state是隨機生成的字符串值。 您會在linkedin應用程序頁面中找到client_id和client_secret值。 「logInVia」函數將返回一個包含authorization_code的承諾,當你得到它時,你需要獲得訪問令牌,並用它發出另一個請求來獲得你想要的數據。

整個請求在步驟3和步驟4中記錄爲here。 P.S:在步驟4中,不要忘記授權標頭中的訪問令牌之前的「承載」。