我有一個Twitter的網絡應用程序,允許用戶從我的網站提交推文。但是,每次提交新推文時,他們都必須重新登錄。有沒有辦法保存OAuth會話,並在用戶清除瀏覽器緩存之前不要提示登錄屏幕?堅持Twitter的OAuth會話
回答
您需要一個名爲user和user_tokens的db表。在用戶內部有:id,user_oauth_secret,user_oauth_token。在user_token裏面你需要這個列:id,user_id,token,created,expires。確保這個令牌是唯一的(並且很長),並帶有一些隨機哈希。現在您可以將該令牌保存到用戶的cookie中,以後再找到正確的oauth數據。
當你在用戶驗證你之後從Twitter獲得回調時,你會在請求頭部收到一個auth_token;你的意思是緩存該令牌,並在用戶每次發出請求時提供該令牌。
聽起來好像你沒有緩存該令牌並在用戶發出請求時提供它。
這麼多的令牌,所以令人困惑:)所以我需要緩存的是該用戶的auth_token? – ulia 2010-01-09 11:15:14
沒錯。您在accessToken調用後獲得的一個。 – 2010-01-17 07:39:34
您必須與用戶保持長時間的會話並保存訪問令牌。 Cookie通常用於識別用戶。
您需要存儲兩個令牌。
當您第一次創建OAuth請求時,它將顯示Twitter驗證屏幕。 auth後,您的OAuth回調頁面將爲用戶獲取兩個查詢字符串參數「oauth_token」和「oauth_token_secret」。您需要將這些(可能位於數據庫中)存儲在某處。
然後,當您再次從Twitter請求OAuth權限時,發送這兩個令牌,用戶將自動獲得授權。
你不應該自己編碼。那裏有大量的OAuth庫。
您需要存儲oauth_token
,您可以使用相同的所有請求。
多久訪問令牌持續多久?我們目前不會訪問 令牌。如果用戶明確拒絕 您的應用程序的設置 或者如果Twitter管理員暫停您的 應用程序,則您的訪問令牌將爲 無效。如果您的申請是 已暫停,您的 應用程序頁面上會有一個註釋,說明它已暫停 。
- 1. 如何堅持Http會話
- 2. 持續的OAuth會話
- 3. 應堅持Drools的知識會話
- 4. 堅持Salesforce OAuth令牌
- 5. 堅持啓用會話狀態
- 6. 會話之間沒有堅持請求
- 7. 如何在iframe中堅持會話?
- 8. 堅持口頭知識會話
- 9. Google登錄Auth2,如何堅持會話?
- 10. 堅持會話到數據庫
- 11. Rails 3會話和cookie如何堅持會話ID Cookie
- 12. 堅持一個會話導致分離的實體傳遞到堅持錯誤
- 13. 谷歌瀏覽器的Twitter中的奇怪會話行爲OAuth
- 14. 我喜歡會@report_for堅持圍繞整個會話
- 15. Twitter與代理支持的Python-OAuth API
- 16. OAuth回調會話
- 17. 會話哈希值不堅持下去的RSpec的測試
- 18. Nvm堅持當前登錄的節點版本Ubuntu的會話
- 19. 堅持.aspxauth會員cookie
- 20. 選項(「devtools.desc.author」)不會堅持,
- 21. Mongoid不堅持協會
- 22. 堅持基於cookie的會話通過節點http代理
- 23. 會話數據在GAE(Java)的不堅持
- 24. 第一次Twitter OAuth請求後會話丟失
- 25. Twitter API - 在會話中保存OAuth令牌
- 26. 堅持這個對象不會堅持其參數
- 27. 保持簡單會員OAuth會話活躍
- 28. Android,Twitter和OAuth:協議不支持?
- 29. 堅持在摩卡和超級應用程序會話
- 30. 問題與ViewState堅持會話時使用IE(但不是FF)
什麼是user_tokens表的用途?我無法將所有內容存儲在用戶表中嗎? thx – ulia 2010-01-09 11:08:32
,因爲它是1:n的關係。用戶可以登錄不同的計算機,並仍然可以登錄第一個。除非time()>到期。 – antpaw 2010-01-09 11:21:03
我明白了。所以這是存儲用戶令牌發送到Twitter?它是user_oauth_secret嗎?哪一個是cookie的? – ulia 2010-01-09 11:24:30