2014-02-12 134 views
0

我正在開發OS X應用程序,用戶可以在其他外部服務(OAuth中)上連接其帳戶。 爲此,我需要在Web視圖中打開我的API(Rails應用程序)頁面,該頁面將用戶重定向到要連接的服務。在這個過程結束時,用戶將被重新定向到我的API上,這會告訴他連接是否正常工作。Webview中的身份驗證會話

因此,用戶需要在我的API上對外部服務網站上的OAuth進程之前和之後進行身份驗證。 當我打開Webview時,用戶通過訪問令牌作爲url的參數進行身份驗證,並且重定向到外部服務正常工作。 但是很多時候,當用戶在連接後在我的API上重定向時,他不再被認證(但有時它可以工作)。

當我通過

[[NSHTTPCookieStorage sharedHTTPCookieStorage] cookiesForURL:] 

檢查我的應用程序的現有的cookie我有我的API的會話cookie:

<NSHTTPCookie version:0 name:"_..._api_session" value:... expiresDate:(null) created:2014-02-12 19:16:00 +0000 (4.13925e+08) sessionOnly:TRUE domain:... path:"/" isSecure:FALSE> 

它只是似乎沒有足夠保持用戶認證。

這可能來自哪裏? 它似乎與Webview有關,因爲當我通過將用戶發送到外部瀏覽器來完成整個過程時,它可以正常工作。 Webview是否具有處理會話cookie的特定方式?

我不知道我是否足夠具體,請問你是否想要其他細節。

回答

0

我終於找出問題所在。

我的應用程序通過永久同步過程與我的API通信,並需要使用access_token進行身份驗證。我使用AFNetworking來創建會話cookie。

當我在Webview中再次進行身份驗證時,它還會創建cookie會話。不知何故,這些cookie有衝突並且會中斷會話。

我剛剛告訴AFNetworking不要使用cookie來避免這種情況,它的工作。