這個 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 的直接副本。
麻省理工學院