2012-04-11 52 views
2

我正在通過iPhone應用程序的OAuth 1.0流程工作。iOS OAuth 1.0 requestToken用戶授權:如何檢測UIWebView何時完成授權?

我有requestToken。我使用適當的URL繼續使用UIWebView來執行成功執行的requestToken的用戶授權。但是,在完成此步驟以回到應用程序後,用戶必須手動點擊「後退」。用戶然後點擊一個單獨的按鈕來執行getAccessToken。 (這顯然是在進行中)。

如何在執行requestToken的用戶授權後自動執行返回操作?在UIWebView上,當用戶成功登錄後,他們將獲得驗證權限的頁面,並且用戶單擊「確定」,我希望應用程序自動返回並在完成後繼續獲取accessToken。

我是新來的,所以可能不會很好地解釋這一點。 FWIW,我正在使用smugmug API。預先感謝您的幫助。

+1

您可能需要查看http://code.google.com/p/gtm-oauth實現或僅使用該庫,因爲它支持使用自定義OAuth服務 – 2012-04-11 07:28:00

+0

謝謝。我已經下載了這個,並看看它。我仍然對iOS開發不熟悉,所以我現在正在游泳,很難遵循他們的所作所爲。但這是一個很好的參考,謝謝。 – Steven 2012-04-12 19:52:04

回答

0

我通過查找特定的URL解決了這個問題,然後在右側URL完成加載後手動彈出navigationController堆棧。我的代碼看起來像這樣:

- (void)webViewDidFinishLoad:(UIWebView *)webView 
{ 
    NSRange range = [webView.request.URL.absoluteString rangeOfString:@"http://thecallbackurl.com/"]; 
    if (range.location != NSNotFound) { 
     [self.navigationController popViewControllerAnimated:YES]; 
    } 
} 

我正在寫smugmug.com APIs。在令牌授權成功之後,他們將瀏覽器重定向到回調URL,所以這就是我一直在尋找的。

0

我不是iOS編碼器,但一旦請求令牌已被最終用戶授權,服務提供商應該重定向到您的回調。你必須有一種方法讓你在UIWebView中「聽」這個。無論是通過這將是這個樣子的重定向HTTP響應回升:

301 Moved Permanently 
Location: URI?oauth_token=BLAHBLAH&oauth_verifier=BLAHBLAH 

如果你能攔截重定向你也許可以從實際完成它,而不是僅僅刮Location頭阻礙UIWebView的。

或者,您至少應該能夠在重定向完成並且您實際位於回調頁面時接通。然後,這將是一個簡單的情況,從隱藏的地址欄中刪除包含令牌和驗證者的URL。如果一切都失敗了,你可以讓你的回調實際上在頁面上打印出令牌和祕密,並將其擦除。

一旦你有驗證者,你應該能夠得到你的訪問令牌而根本不涉及最終用戶。