omniauth-yandex 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +5 -0
- data/.rspec +1 -0
- data/.travis.yml +5 -0
- data/Gemfile +3 -0
- data/README.md +18 -0
- data/Rakefile +1 -0
- data/lib/omniauth-yandex.rb +8 -0
- data/lib/omniauth-yandex/version.rb +5 -0
- data/lib/omniauth/strategies/yandex.rb +72 -0
- data/omniauth-yandex.gemspec +23 -0
- metadata +88 -0
data/.rspec
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
--colour
|
data/Gemfile
ADDED
data/README.md
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# OmniAuth Yandex.ru
|
|
2
|
+
|
|
3
|
+
This gem contains the unofficial Yandex.ru OAuth2 strategy for [OmniAuth](http://github.com/intridea/omniauth).
|
|
4
|
+
|
|
5
|
+
## Basic Usage
|
|
6
|
+
|
|
7
|
+
use OmniAuth::Builder do
|
|
8
|
+
provider :yandex, ENV['YANDEX_KEY'], ENV['YANDEX_PRIVATE_KEY']
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
## Links
|
|
13
|
+
|
|
14
|
+
* http://api.yandex.ru/oauth/
|
|
15
|
+
|
|
16
|
+
## License
|
|
17
|
+
|
|
18
|
+
Copyright (c) 2011 by Kirill Shatrov
|
data/Rakefile
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
require "bundler/gem_tasks"
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
require 'omniauth/strategies/oauth2'
|
|
2
|
+
require 'xmlsimple'
|
|
3
|
+
|
|
4
|
+
module OmniAuth
|
|
5
|
+
module Strategies
|
|
6
|
+
|
|
7
|
+
# Authenticate to Yandex.ru utilizing OAuth 2.0
|
|
8
|
+
# http://api.yandex.ru/oauth/
|
|
9
|
+
|
|
10
|
+
class Yandex < OmniAuth::Strategies::OAuth2
|
|
11
|
+
option :name, "yandex"
|
|
12
|
+
|
|
13
|
+
option :client_options, {
|
|
14
|
+
:site => 'https://oauth.yandex.ru/',
|
|
15
|
+
:token_url => '/token',
|
|
16
|
+
:authorize_url => '/authorize'
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
uid do
|
|
20
|
+
raw_info[:uid]
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
info do
|
|
24
|
+
{
|
|
25
|
+
:nickname => raw_info[:name],
|
|
26
|
+
:email => raw_info[:email],
|
|
27
|
+
:name => raw_info[:name],
|
|
28
|
+
:image => raw_info[:photo],
|
|
29
|
+
:location => raw_info[:country],
|
|
30
|
+
:urls => {
|
|
31
|
+
'Yandex' => raw_info[:yaru_profile]
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
extra do
|
|
37
|
+
{:raw_info => raw_info}
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def callback_url
|
|
41
|
+
if options.authorize_options.respond_to? :callback_url
|
|
42
|
+
options.authorize_options.callback_url
|
|
43
|
+
else
|
|
44
|
+
super
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
private
|
|
49
|
+
|
|
50
|
+
def raw_info
|
|
51
|
+
@raw_info ||= begin
|
|
52
|
+
# Get user info from Ya.ru API
|
|
53
|
+
# http://api.yandex.ru/yaru/doc/ref/concepts/discovery.xml
|
|
54
|
+
xml_data = access_token.get("https://api-yaru.yandex.ru/me/").body
|
|
55
|
+
data = XmlSimple.xml_in(xml_data)
|
|
56
|
+
{
|
|
57
|
+
:uid => data["id"][0],
|
|
58
|
+
:yaru_profile => data["link"][0]["href"],
|
|
59
|
+
:photo => data["link"][2]["href"],
|
|
60
|
+
:name => data["name"][0],
|
|
61
|
+
:email => data["email"][0],
|
|
62
|
+
:country => data["country"][0],
|
|
63
|
+
:city => data["city"][0],
|
|
64
|
+
:sex => data["sex"][0],
|
|
65
|
+
:skype => data["skype"][0]
|
|
66
|
+
}
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
$:.push File.expand_path("../lib", __FILE__)
|
|
2
|
+
require "omniauth-yandex/version"
|
|
3
|
+
|
|
4
|
+
Gem::Specification.new do |s|
|
|
5
|
+
s.name = "omniauth-yandex"
|
|
6
|
+
s.version = Omniauth::Yandex::VERSION
|
|
7
|
+
s.authors = ["Kir Shatrov"]
|
|
8
|
+
s.email = ["shatrov@me.com"]
|
|
9
|
+
s.homepage = "https://github.com/kirs/omniauth-yandex"
|
|
10
|
+
s.summary = %q{OmniAuth strategy for Yandex.ru}
|
|
11
|
+
s.description = %q{OmniAuth strategy for Yandex.ru}
|
|
12
|
+
|
|
13
|
+
s.rubyforge_project = "omniauth-yandex"
|
|
14
|
+
|
|
15
|
+
s.files = `git ls-files`.split("\n")
|
|
16
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
|
17
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
|
18
|
+
s.require_paths = ["lib"]
|
|
19
|
+
|
|
20
|
+
s.add_dependency 'omniauth', '~> 1.0'
|
|
21
|
+
s.add_dependency 'omniauth-oauth2', '~> 1.0'
|
|
22
|
+
s.add_dependency 'xml-simple'
|
|
23
|
+
end
|
metadata
ADDED
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: omniauth-yandex
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.0.1
|
|
5
|
+
prerelease:
|
|
6
|
+
platform: ruby
|
|
7
|
+
authors:
|
|
8
|
+
- Kir Shatrov
|
|
9
|
+
autorequire:
|
|
10
|
+
bindir: bin
|
|
11
|
+
cert_chain: []
|
|
12
|
+
date: 2011-11-26 00:00:00.000000000Z
|
|
13
|
+
dependencies:
|
|
14
|
+
- !ruby/object:Gem::Dependency
|
|
15
|
+
name: omniauth
|
|
16
|
+
requirement: &70210863807100 !ruby/object:Gem::Requirement
|
|
17
|
+
none: false
|
|
18
|
+
requirements:
|
|
19
|
+
- - ~>
|
|
20
|
+
- !ruby/object:Gem::Version
|
|
21
|
+
version: '1.0'
|
|
22
|
+
type: :runtime
|
|
23
|
+
prerelease: false
|
|
24
|
+
version_requirements: *70210863807100
|
|
25
|
+
- !ruby/object:Gem::Dependency
|
|
26
|
+
name: omniauth-oauth2
|
|
27
|
+
requirement: &70210863805020 !ruby/object:Gem::Requirement
|
|
28
|
+
none: false
|
|
29
|
+
requirements:
|
|
30
|
+
- - ~>
|
|
31
|
+
- !ruby/object:Gem::Version
|
|
32
|
+
version: '1.0'
|
|
33
|
+
type: :runtime
|
|
34
|
+
prerelease: false
|
|
35
|
+
version_requirements: *70210863805020
|
|
36
|
+
- !ruby/object:Gem::Dependency
|
|
37
|
+
name: xml-simple
|
|
38
|
+
requirement: &70210863803400 !ruby/object:Gem::Requirement
|
|
39
|
+
none: false
|
|
40
|
+
requirements:
|
|
41
|
+
- - ! '>='
|
|
42
|
+
- !ruby/object:Gem::Version
|
|
43
|
+
version: '0'
|
|
44
|
+
type: :runtime
|
|
45
|
+
prerelease: false
|
|
46
|
+
version_requirements: *70210863803400
|
|
47
|
+
description: OmniAuth strategy for Yandex.ru
|
|
48
|
+
email:
|
|
49
|
+
- shatrov@me.com
|
|
50
|
+
executables: []
|
|
51
|
+
extensions: []
|
|
52
|
+
extra_rdoc_files: []
|
|
53
|
+
files:
|
|
54
|
+
- .gitignore
|
|
55
|
+
- .rspec
|
|
56
|
+
- .travis.yml
|
|
57
|
+
- Gemfile
|
|
58
|
+
- README.md
|
|
59
|
+
- Rakefile
|
|
60
|
+
- lib/omniauth-yandex.rb
|
|
61
|
+
- lib/omniauth-yandex/version.rb
|
|
62
|
+
- lib/omniauth/strategies/yandex.rb
|
|
63
|
+
- omniauth-yandex.gemspec
|
|
64
|
+
homepage: https://github.com/kirs/omniauth-yandex
|
|
65
|
+
licenses: []
|
|
66
|
+
post_install_message:
|
|
67
|
+
rdoc_options: []
|
|
68
|
+
require_paths:
|
|
69
|
+
- lib
|
|
70
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
71
|
+
none: false
|
|
72
|
+
requirements:
|
|
73
|
+
- - ! '>='
|
|
74
|
+
- !ruby/object:Gem::Version
|
|
75
|
+
version: '0'
|
|
76
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
77
|
+
none: false
|
|
78
|
+
requirements:
|
|
79
|
+
- - ! '>='
|
|
80
|
+
- !ruby/object:Gem::Version
|
|
81
|
+
version: '0'
|
|
82
|
+
requirements: []
|
|
83
|
+
rubyforge_project: omniauth-yandex
|
|
84
|
+
rubygems_version: 1.8.10
|
|
85
|
+
signing_key:
|
|
86
|
+
specification_version: 3
|
|
87
|
+
summary: OmniAuth strategy for Yandex.ru
|
|
88
|
+
test_files: []
|