2016-06-07 49 views
1

我在ios應用程序中集成了linkedin ios sdk。所以,當我點擊按鈕進行驗證與linkedin時,顯示一個視圖控制器和頁面輸入用戶名和密碼顯示。現在,當我輸入正確的用戶名和密碼時,它會返回一個包含代碼和狀態的網址。問題是與請求一起發送的狀態(這是一個隨機字符串)與響應url中收到的不一樣。例如,如果我送Linkedin ios sdk返回錯誤數據

state = @"qwertyu" 

則返回值是

state = @"qwertyu#!" 

額外#!附加它。

在代碼中我正在檢查發送和接收狀態是否相同,因爲它不相同我正在返回一個錯誤(這是它輸入正確的用戶名和密碼後顯示的錯誤)。如果我刪除,如果條件,那麼它工作得很好。

SYLinkedInApplication *app = [SYLinkedInApplication 
           applicationWithRedirectURL:self.redirectUrl 
           clientId:self.appKey 
           clientSecret:self.appSecret 
           state:@"<RANDOM-STRING>" 
           grantedAccess:@[#something]; 

條件

if ([self.application.state isEqualToString:receivedState]) { 
    //if true send success 
} 

所以我的問題是

1)我們所需要的,如果條件檢查的狀態?

2)如果我們需要條件,那麼爲什麼返回狀態字符串不同?

希望問題清楚。

在此先感謝。

+0

我有同樣的問題,它在狀態結束時添加'#!',所以當我用自己的驗證,他們是不相同的,我不想繞過此驗證..任何人都有一個解決方案爲了這?我用Ionic做這個,但是同樣的問題。 – Ariel

+0

看這個視頻https://www.youtube.com/watch?v=PXuu3t3pIe4 –

回答

0

我解決了這個問題(但與離子)。

1)是的,你應該檢查的狀態,以防止CSRF

2)這是我通過請求授權和訪問令牌時改變URL解決了這個問題:

https://www.linkedin.com/uas/oauth2/authorizationhttps://www.linkedin.com/oauth/v2/authorization

而且https://www.linkedin.com/uas/oauth2/accessTokenhttps://www.linkedin.com/oauth/v2/accessToken

這解決了我的問題。我希望它也能解決你的問題,或者別人的問題。