2010-06-16 84 views
1

我已經與DotNetOpenAuth做3大腿授權很大的運氣。目前,我正在連接並提供一些Google數據。DotNetOpenAuth爲以前授權的網站

我的問題是,顯然,如果你已經auth'd我的web應用程序到您的谷歌帳戶,當我打電話

var accessTokenResponse = google.ProcessUserAuthorization(); 

它基本上什麼都不做。如何獲得已經驗證我的應用程序的帳戶的令牌?我看不到任何回調。

我嘲笑這一點,直到我對OAuth一般的無知。

回答

2

您必須將DotNetOpenAuth附帶的示例InMemoryTokenManager替換爲您自己的實現IConsumerTokenManager,該實現將訪問令牌和機密存儲在數據庫中。然後,將該接口的實例傳遞給WebConsumer類,它將接收所有傳入的令牌和祕密。

要麼調用ProcessUserAuthorization,要麼在您的令牌管理器類中,您還必須將您保存的訪問令牌與當前登錄到您網站的用戶的用戶帳戶相關聯。

然後,當用戶下次訪問您的網站時,您可以在數據庫中查找他們的用戶帳戶以獲取其訪問令牌。並且您將其用於未來的請求。您的IConsumerTokenManager將根據需要提供關聯的密碼機密,並且生活將會很好。

+0

不能ping一箇舊的線程,但我沒有意識到InMemoryTokenManager是一個打算替換的樣本。這可能解釋了我自己的一些頭腦 - 圍繞OAuth實現令牌機密。謝謝! – 2012-09-21 10:21:44

+0

在'InMemoryTokenManager'示例中種植了一個簡單的蛋,如果將它從樣本中提取並用於其他地方,應該故意破壞構建,並且錯誤告訴您要構建自己的構建。 @JHubSharp有沒有在你的情況下工作? – 2012-09-22 15:29:12

+0

不。實際上,當SimpleConsumerTokenManager崩潰時,它對我來說工作得很好,因爲它不會保留訪問令牌密鑰。我很喜歡它,如果你能提供一些見解我的問題:http://stackoverflow.com/questions/12485117/custom-oauth-client-in-mvc4-dotnetopenauth-missing-access-token-secret – 2012-09-23 11:01:48