Этот драгоценный камень представляет собой простую конечную точку Rack, которая обеспечивает аутентификацию Flickr в вашем веб-приложении. Вы просто монтируете его в свое веб-приложение, и оно делает всю остальную работу.
Этот драгоценный камень является альтернативой omniauth-flickr. Оба они дают схожие результаты, главное отличие состоит в том, что flickr-login
гораздо легче. Если вас это не волнует, я настоятельно рекомендую вам использовать omniauth-flickr
, потому что omniauth
— отличный стандарт аутентификации.
Если вы собираетесь использовать токен доступа пользователя для связи с API Flickr, вам понадобится один из этих двух драгоценных камней:
Поместите его в свой Gemfile:
gem "flickr-login" , require : "flickr/login"
И запустите bundle install
.
У вас должен быть свой ключ API и общий секрет. Если у вас их еще нет, вы можете подать заявку на них здесь. В настройке просто замените API_KEY
и SHARED_SECRET
реальными значениями.
Это пример того, как можно использовать драгоценный камень в Rails 3 (в 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
В Синатре это заносится в ваш 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). Вы также можете установить разрешения, которые запрашиваете у пользователя. Это можно сделать, передав параметр perms
GET в URL-адресе. Например, при переходе по адресу http://localhost:9393/login?perms=delete
у пользователя будут запрошены разрешения на «удаление». Вы можете запросить у пользователя разрешения на «чтение», «запись» или «удаление».
Модуль Flickr::Login::Helpers
добавляет в ваше приложение следующие методы:
#flickr_user
(хеш) – информация о пользователе, который только что прошел аутентификацию.#flickr_access_token
(массив) – токен и секрет доступа.#flickr_clear
— стирает сеанс, который был заполнен после аутентификации, фактически выходя из системы пользователя.В Rails вы можете включить модуль в свой контроллер:
# app/controllers/session_controller.rb
class SessionController < ApplicationController
include Flickr :: Login :: Helpers
end
В Синатре вы можете просто вызвать helpers
метод:
helpers Flickr :: Login :: Helpers
Этот драгоценный камень является почти прямой копией драгоценных камней @mislav для входа в Twitter и Facebook-login.
Массачусетский технологический институт