这个 gem 是一个简单的 Rack 端点,它在您的 Web 应用程序中提供 Flickr 身份验证。您只需将其安装到您的 Web 应用程序上,它就会完成其余的工作。
这个 gem 是omniauth-flickr 的替代品。它们都提供相似的结果,主要区别在于flickr-login
更加轻量级。如果您不关心这一点,我强烈建议您使用omniauth-flickr
,因为omniauth
是一个很好的身份验证标准。
如果您打算使用用户的访问令牌与 Flickr 的 API 进行通信,您将需要使用以下 2 个 gem 之一:
将其放入您的 Gemfile 中:
gem "flickr-login" , require : "flickr/login"
并运行bundle install
。
您必须拥有您的 API 密钥和共享秘密。如果您还没有,您可以在这里申请。在设置中,只需将API_KEY
和SHARED_SECRET
替换为实际值即可。
这是一个如何在Rails 3中使用 gem 的示例(在 Rails 2 中可能类似)。
# config/application.rb
module YourApp
class Application < Rails :: Application
# ...
config . flickr_login = Flickr :: Login . new "API_KEY" , "SHARED_SECRET"
# ...
end
end
# config/routes.rb
YourApp :: Application . routes . draw do
# ...
flickr = YourApp :: Application . config . flickr_login
flickr_endpoint = flickr . login_handler ( return_to : "/any-path" )
mount flickr_endpoint => '/login' , as : :login
# ...
end
在 Sinatra 中,这被放入你的config.ru
中,它可能看起来像这样:
# config.ru
require './app'
run Sinatra :: Application
现在您可以像这样安装机架端点
# config.ru
require './app'
require 'flickr/login'
flickr = Flickr :: Login . new "API_KEY" , "SHARED_SECRET"
flickr_endpoint = flickr . login_handler ( return_to : "/any-path" )
use Rack :: Session :: Cookie
run Rack :: URLMap . new "/" => Sinatra :: Application ,
"/login" => flickr_endpoint
就是这样。只需在app.rb
中启用会话:
# app.rb
enable :sessions
用户将首先被重定向到 Flickr 以批准您的申请。然后,用户将被重定向回您的应用程序(返回到:return_to
指定的路径),并填写session[:flickr_access_token]
和session[:flickr_user]
。
session[:flickr_access_token]
– 访问令牌和访问密钥的数组session[:flickr_user]
– 有关经过身份验证的用户信息的哈希值Flickr::Login
的可用选项有:
:return_to
– 身份验证后用户重定向到的位置(默认为"/"
):site
– 使用的 API 端点(默认为 http://www.flickr.com/services)您还可以设置向用户请求的权限。您可以通过在 URL 中传递perms
GET 参数来完成此操作。例如,访问http://localhost:9393/login?perms=delete
会询问用户“删除”权限。您可以向用户请求“读”、“写”或“删除”权限。
Flickr::Login::Helpers
模块将这些方法添加到您的应用程序中:
#flickr_user
(Hash) – 刚刚通过身份验证的用户的信息#flickr_access_token
(数组)- 访问令牌和秘密#flickr_clear
– 擦除身份验证后填充的会话,有效注销用户在Rails中,您可以将该模块包含在控制器中:
# app/controllers/session_controller.rb
class SessionController < ApplicationController
include Flickr :: Login :: Helpers
end
在Sinatra中你只需调用helpers
方法即可:
helpers Flickr :: Login :: Helpers
这个 gem 几乎是@mislav的 twitter-login 和 facebook-login gems 的直接副本。
麻省理工学院