首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OAuth::Unauthorized 401 Unauthorized for omniauth- rails中的twitter

OAuth::Unauthorized 401 Unauthorized for omniauth- rails中的twitter
EN

Stack Overflow用户
提问于 2013-03-07 16:07:00
回答 2查看 6.1K关注 0票数 5

当我点击http://127.0.0.1:3000/auth/twitter,时,我在rails中得到了OAuth::Unauthorized 401未授权的错误。我正在使用我的rails应用程序跟踪Railscast视频#241进行Twitter身份验证。我用谷歌搜索了很多,但还是找不到答案。

代码语言:javascript
复制
 Info regarding app on twitter:
 Callback URL: [http://127.0.0.1:3000/auth/twitter/callback]
 Website: [http://127.0.0.1:3000]


### omniauth.rb 
Rails.application.config.middleware.use OmniAuth::Builder do
  # provider :developer unless Rails.env.production?
  provider :twitter, ENV['75UOAIDmKrRXvXKBhNvKA'],    ENV['GrIaBI0tQy2TtjOtaFL9VxT6s9qq1sV7h9yRaZW4A']
end

### routes.rb
Chilli::Application.routes.draw do
  resources :posts
  root :to => 'posts#index'
  #match '/auth/:twitter/callback' => 'sessions#create', :as => :auth_callback
  match 'auth/twitter/callback', to: 'sessions#create'
end

### application.html.erb
<div id="user_nav">
<%= link_to "Sign in with Twitter", "/auth/twitter"%>
</div>

### sessions_controller.rb
class SessionsController < ApplicationController
  def create
    user = User.from_omniauth(env['omniauth.auth'])
    session[:user_id] = user.id
    redirect_to root_url, notice: "Signed in."
  end
end

### user.rb
class User < ActiveRecord::Base
  attr_accessible :name, :provider, :uid
  def self.from_omniauth(auth)
    where(auth.slice("provider", "uid")).first || create_from_omniauth(auth)
  end

  def self.create_from_omniauth(auth)
    create! do |user|
      user.provider = auth["provider"]
      user.uid = auth["uid"]
      user.name = auth["info"]["nickname"]
     end
   end
 end
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-07 16:17:11

omniauth.rb中什么是

ENV['75UOAIDmKrRXvXKBhNvKA'], ENV['GrIaBI0tQy2TtjOtaFL9VxT6s9qq1sV7h9yRaZW4A']

如果75UOAIDmKrRXvXKBhNvKAGrIaBI0tQy2TtjOtaFL9VxT6s9qq1sV7h9yRaZW4A是您的APP_IDAPP_SECRET,则应将其编写为:

代码语言:javascript
复制
provider :twitter, '75UOAIDmKrRXvXKBhNvKA', 'GrIaBI0tQy2TtjOtaFL9VxT6s9qq1sV7h9yRaZW4A'
票数 12
EN

Stack Overflow用户

发布于 2013-07-01 23:33:43

我也有同样的问题,解决这个问题的方法是:

更改:

代码语言:javascript
复制
ENV['75UOAIDmKrRXvXKBhNvKA'],ENV['GrIaBI0tQy2TtjOtaFL9VxT6s9qq1sV7h9yRaZW4A']

至:

代码语言:javascript
复制
'75UOAIDmKrRXvXKBhNvKA', 'GrIaBI0tQy2TtjOtaFL9VxT6s9qq1sV7h9yRaZW4A'

并在“auth”前加上“/”:

代码语言:javascript
复制
match '/auth/:provider/callback', to: 'sessions#create', via: 'get'
match '/auth/failure', to: redirect('/'), via: 'get'
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15266051

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档