ruby-on-rails – 通过OmniAuth on Rails 3,Net :: HTTPUnauthor
发布时间:2020-12-17 03:12:25 所属栏目:百科 来源:网络整理
导读:我按照Simple OmniAuth教程( http://asciicasts.com/episodes/241-simple-omniauth),我可以使用我的Twitter帐户登录该服务.现在我想从应用程序访问twitter API和推文.我的代码如下: class TwitterController ApplicationControllerdef prepare_access_token
我按照Simple OmniAuth教程(
http://asciicasts.com/episodes/241-simple-omniauth),我可以使用我的Twitter帐户登录该服务.现在我想从应用程序访问twitter API和推文.我的代码如下:
class TwitterController < ApplicationController def prepare_access_token(oauth_token,oauth_token_secret) consumer = OAuth::Consumer.new("KEY","SECRET",{ :site => "http://api.twitter.com" }) # now create the access token object from passed values token_hash = { :oauth_token => oauth_token,:oauth_token_secret => oauth_token_secret } access_token = OAuth::AccessToken.from_hash(consumer,token_hash) return access_token end def tweet # Exchange our oauth_token and oauth_token secret for the AccessToken instance. @access_token = prepare_access_token(current_user.token,current_user.secret) @response = @access_token.request(:post,"http://api.twitter.com/1/statuses/update.json",:status => "Tweet pela API") render :html => @response.body end end 渲染线不做任何事情.此外,如果我添加 <p><%= @response %></p> 在我看来,我明白了 #<净:: HTTPUnauthorized:0x2ac5149e94f0> 不过,我可以从Twitter帐户获取用户名. 我的用户模型如下: class User < ActiveRecord::Base def self.create_with_omniauth(auth) create! do |user| user.provider = auth["provider"] user.uid = auth["uid"] user.name = auth["user_info"]["name"] user.token = auth['credentials']['token'],user.secret = auth['credentials']['secret'] end end end 我究竟做错了什么? 解决方法
我已经弄清楚了问题,现在我觉得很傻.用户模型上有一个逗号,不应该存在.该模型应该是
class User < ActiveRecord::Base def self.create_with_omniauth(auth) create! do |user| user.provider = auth["provider"] user.uid = auth["uid"] user.name = auth["user_info"]["name"] user.token = auth['credentials']['token'] user.secret = auth['credentials']['secret'] end end end 现在一切正常. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |