Ruby on rails 在rails 4中存储访问令牌对象
您好,目前我在存储OAuth::AccessToken的对象时遇到了一个问题。首先让我描述一下情况 我正在开发rails 4应用程序,我正在使用另一个站点的API,比如example.com,它使用三条腿的oauth授权(与相同)。为了实现这个功能,我使用了这个,并实现了相同的功能 现在我可以打开example.com和我的应用程序之间的通信通道,也可以使用它们的API 这是我的示例实现 创建消费者Ruby on rails 在rails 4中存储访问令牌对象,ruby-on-rails,oauth,Ruby On Rails,Oauth,您好,目前我在存储OAuth::AccessToken的对象时遇到了一个问题。首先让我描述一下情况 我正在开发rails 4应用程序,我正在使用另一个站点的API,比如example.com,它使用三条腿的oauth授权(与相同)。为了实现这个功能,我使用了这个,并实现了相同的功能 现在我可以打开example.com和我的应用程序之间的通信通道,也可以使用它们的API 这是我的示例实现 创建消费者 consumer = OAuth::Consumer.new API_KEY,
consumer = OAuth::Consumer.new API_KEY,
API_SECRET,
{
site: SITE_URL,
header: { ACCEPT_HEADERS },
http_method: :get,
request_token_url: request_token_uri,
access_token_url: access_token_uri,
authorize_url: authorizerequest_token_uri
}
获取请求令牌
request_token = consumer.get_request_token({}, CALLBACK_URL)
access_token = request_token.get_access_token(oauth_verifier: verifier)
encrypt_access_token = Marshal.dump(access_token)
AccessTokenUser.create(user_id: 1, access_token: encrypt_access_token)
转到授权url并获取访问令牌验证程序“
request_token.authorize_url
verifier = gets.chomp
获取访问令牌
access_token = request_token.get_access_token(oauth_verifier: verifier)
现在我在整个应用程序中使用这个访问令牌(OAuth::AccessToken的对象)。(用于进行get、post API调用)。由于必须在应用程序中使用,我已将此对象存储到会话中
session[:access_token] = access_token
但有时我会遇到cookie溢出错误。因此,我有以下疑问
- 存储此对象的好方法是什么?(DB除外)
- 我应该实现中间件吗
- 或者是否有其他方法可以实现相同类型的功能
如果您勇敢或愚蠢,您也可以尝试压缩数据或将其直接存储在加密的cookie中,或将其拆分为多个块并存储在单独的cookie中,但所有这些都是黑客行为,最好的答案是实现db后端或升级会话存储。:) 我也遇到了同样的问题。我已经将访问令牌存储在数据库中(我使用的是mysql数据库)。为此,我使用了ruby类 从医生那里 封送处理库将Ruby对象的集合转换为 字节流,允许它们存储在当前活动的 剧本随后可读取该数据并将原始对象 重组的 这是我存储访问令牌的示例代码
request_token = consumer.get_request_token({}, CALLBACK_URL)
access_token = request_token.get_access_token(oauth_verifier: verifier)
encrypt_access_token = Marshal.dump(access_token)
AccessTokenUser.create(user_id: 1, access_token: encrypt_access_token)
检索存储的访问令牌
decrypt_access_token = Marshal.load(access_token)
然后可以使用此解密的访问令牌进行API调用。访问令牌有多少字节长?为什么不使用DB?您必须将此数据存储在某个位置。
Marshal
不会加密访问令牌。它只是将其转换为字节流。