【发布时间】:2014-12-24 12:24:13
【问题描述】:
我一直在尝试在用户使用 twitter api 登录时呈现用户个人资料图片,但遇到了一些困难。此时没有错误,但图像未呈现。
gem 'twitter' 已安装。
这是我的 user.rb 文件
class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :omniauthable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
has_many :lines
def profile_image_uri(size = :mini)
parse_encoded_uri(insecure_uri(profile_image_uri_https(size))) unless @attrs[:profile_image_url_https].nil?
end
def self.find_for_twitter_oauth(auth, signed_in_resource=nil)
user = User.where(:provider => auth.provider, :uid => auth.uid).first
if user
return user
else
registered_user = User.where(:email => auth.uid + "@twitter.com").first
if registered_user
return registered_user
else
user = User.create(name:auth.extra.raw_info.name,
provider:auth.provider,
profile_image_url:auth.uid + "https://pbs.twimg.com/profile_images/2284174872/7df3h38zabcvjylnyfe3_mini.png",
uid:auth.uid,
email:auth.uid+"@twitter.com",
password:Devise.friendly_token[0,20],
)
end
end
end
这是 application.html.erb 文件中的相关代码
<% if user_signed_in? %>
<li> <a href="#"> <img src="<%= current_user.profile_image_url %>"> <%= current_user.name %> </a></li><li>
<%= link_to "Sign out", destroy_user_session_path,:method => :delete %></li>
<% else %>
<li><%= link_to user_omniauth_authorize_path(:twitter) do %>
<img src="https://g.twimg.com/dev/sites/default/files/images_documentation/sign-in-with-twitter-link.png">
<% end %>
</li>
这是我的数据库中的 schema.rb 文件。我将 url 存储为字符串 profile_image_url。
create_table "users", force: true do |t|
t.string "email", default: "", null: false
t.string "encrypted_password", default: "", null: false
t.string "reset_password_token"
t.datetime "reset_password_sent_at"
t.datetime "remember_created_at"
t.integer "sign_in_count", default: 0, null: false
t.datetime "current_sign_in_at"
t.datetime "last_sign_in_at"
t.string "current_sign_in_ip"
t.string "last_sign_in_ip"
t.datetime "created_at"
t.datetime "updated_at"
t.string "provider"
t.string "uid"
t.string "name"
t.string "profile_image_url"
结束
对我做错了什么有什么建议吗?
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-3 twitter-bootstrap twitter