2010-01-09 104 views
4

我有一個Twitter的網絡應用程序,允許用戶從我的網站提交推文。但是,每次提交新推文時,他們都必須重新登錄。有沒有辦法保存OAuth會話,並在用戶清除瀏覽器緩存之前不要提示登錄屏幕?堅持Twitter的OAuth會話

回答

1

您需要一個名爲user和user_tokens的db表。在用戶內部有:id,user_oauth_secret,user_oauth_token。在user_token裏面你需要這個列:id,user_id,token,created,expires。確保這個令牌是唯一的(並且很長),並帶有一些隨機哈希。現在您可以將該令牌保存到用戶的cookie中,以後再找到正確的oauth數據。

+0

什麼是user_tokens表的用途?我無法將所有內容存儲在用戶表中嗎? thx – ulia 2010-01-09 11:08:32

+0

,因爲它是1:n的關係。用戶可以登錄不同的計算機,並仍然可以登錄第一個。除非time()>到期。 – antpaw 2010-01-09 11:21:03

+0

我明白了。所以這是存儲用戶令牌發送到Twitter?它是user_oauth_secret嗎?哪一個是cookie的? – ulia 2010-01-09 11:24:30

4

當你在用戶驗證你之後從Twitter獲得回調時,你會在請求頭部收到一個auth_token;你的意思是緩存該令牌,並在用戶每次發出請求時提供該令牌。

聽起來好像你沒有緩存該令牌並在用戶發出請求時提供它。

+3

這麼多的令牌,所以令人困惑:)所以我需要緩存的是該用戶的auth_token? – ulia 2010-01-09 11:15:14

+0

沒錯。您在accessToken調用後獲得的一個。 – 2010-01-17 07:39:34

0

您必須與用戶保持長時間的會話並保存訪問令牌。 Cookie通常用於識別用戶。

1

您需要存儲兩個令牌。

當您第一次創建OAuth請求時,它將顯示Twitter驗證屏幕。 auth後,您的OAuth回調頁面將爲用戶獲取兩個查詢字符串參數「oauth_token」和「oauth_token_secret」。您需要將這些(可能位於數據庫中)存儲在某處。

然後,當您再次從Twitter請求OAuth權限時,發送這兩個令牌,用戶將自動獲得授權。

你不應該自己編碼。那裏有大量的OAuth庫。

4

您需要存儲oauth_token,您可以使用相同的所有請求。

FAQ of Twitter API

多久訪問令牌持續多久?我們目前不會訪問 令牌。如果用戶明確拒絕 您的應用程序的設置 或者如果Twitter管理員暫停您的 應用程序,則您的訪問令牌將爲 無效。如果您的申請是 已暫停,您的 應用程序頁面上會有一個註釋,說明它已暫停 。