omniauth-mail_ru 0.0.1 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +63 -21
- data/lib/omniauth-mail_ru.rb +2 -0
- data/lib/omniauth/mail_ru/version.rb +61 -3
- data/lib/omniauth/strategies/mail_ru.rb +57 -0
- data/omniauth-mail_ru.gemspec +2 -2
- metadata +5 -4
- data/lib/omniauth/mail_ru.rb +0 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 52416827d4fd6c0d2fc65d03a7de877fbb13bfd3
|
4
|
+
data.tar.gz: 1e8179b4b2758ae04d27caeaf994516cf120218f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fd735efcf1a66b2ada79e00148da1dc21121f7d43d99a579ac7aa584249578638b2f29efcf0f2df9ef0072a5fda661b6a2ef1e83424b1b5df81cdb6fe2e83dcb
|
7
|
+
data.tar.gz: 0e17892479daff4cafcc90c3b7fca63817b6154c16fbba8a153c5bba45e5509038f02b51c93ab683b02e116a892dc5598bb3211b45f75a5eb8b11208a3c7757d
|
data/README.md
CHANGED
@@ -1,47 +1,89 @@
|
|
1
1
|
# OmniAuth Mail.ru
|
2
2
|
|
3
|
-
This
|
3
|
+
This is unofficial [OmniAuth](https://github.com/intridea/omniauth) strategy for Mail.ru.
|
4
4
|
|
5
|
-
## Using
|
5
|
+
## Using
|
6
6
|
|
7
|
-
|
8
|
-
|
9
|
-
```ruby
|
10
|
-
gem 'omniauth-mail_ru'
|
11
|
-
```
|
12
|
-
|
13
|
-
If you need to use the latest HEAD version, you can do so with:
|
7
|
+
Add this gem to your Gemfile:
|
14
8
|
|
15
9
|
```ruby
|
16
10
|
gem 'omniauth-mail_ru'
|
17
11
|
```
|
12
|
+
# Configuration
|
18
13
|
|
19
14
|
Next, tell OmniAuth about this provider. For a Rails app, your `config/initializers/omniauth.rb` file should look like this:
|
20
15
|
|
21
16
|
```ruby
|
22
17
|
Rails.application.config.middleware.use OmniAuth::Builder do
|
23
|
-
provider :mail_ru,
|
18
|
+
provider :mail_ru, 'API_KEY', 'PRIVATE_KEY'
|
24
19
|
end
|
25
20
|
```
|
26
21
|
|
27
22
|
Replace `"API_KEY"` and `"PRIVATE_KEY"` with the appropriate values you obtained (https://api.mail.ru).
|
28
23
|
|
29
|
-
```ruby
|
30
|
-
Rails.application.config.middleware.use OmniAuth::Builder do
|
31
|
-
provider :mail_ru, "API_KEY", "PRIVATE_KEY"
|
32
|
-
end
|
33
|
-
```
|
34
|
-
|
35
24
|
## Authentication Hash
|
36
25
|
An example auth hash available in `request.env['omniauth.auth']`:
|
37
26
|
|
38
27
|
```ruby
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
28
|
+
{
|
29
|
+
provider: 'mail_ru',
|
30
|
+
uid: '1111111111',
|
31
|
+
info: {
|
32
|
+
name: 'John Smith',
|
33
|
+
email: 'john@mail.ru',
|
34
|
+
nickname: 'JohnS',
|
35
|
+
first_name: 'John',
|
36
|
+
last_name: 'Smith',
|
37
|
+
image: 'http://avt.appsmail.ru/mail/john/_avatar50',
|
38
|
+
urls: {
|
39
|
+
'Mailru' => 'http://my.mail.ru/mail/john/'
|
40
|
+
}
|
41
|
+
},
|
42
|
+
credentials: {
|
43
|
+
token: '4ec9286c2f...',
|
44
|
+
refresh_token: '351456424ad7c5...',
|
45
|
+
expires_at: 1411054463,
|
46
|
+
expires: true
|
47
|
+
},
|
48
|
+
extra: {
|
49
|
+
raw_info: {
|
50
|
+
pic_50: 'http://avt.appsmail.ru/mail/john/_avatar50',
|
51
|
+
friends_count: 256,
|
52
|
+
show_age: 1,
|
53
|
+
has_photosafe: 0,
|
54
|
+
nick: 'JohnS',
|
55
|
+
is_friend: 0,
|
56
|
+
is_online: 1,
|
57
|
+
has_pic: 1,
|
58
|
+
email: 'john@mail.ru',
|
59
|
+
pic_190: 'http://avt.appsmail.ru/mail/john/_avatar190',
|
60
|
+
referer_id: '',
|
61
|
+
pic_32: 'http://avt.appsmail.ru/mail/john/_avatar32',
|
62
|
+
referer_type: '',
|
63
|
+
last_visit: '1410961776',
|
64
|
+
uid: '1111111111',
|
65
|
+
app_installed: 1,
|
66
|
+
status_text: '',
|
67
|
+
pic_22: 'http://avt.appsmail.ru/mail/john/_avatar22',
|
68
|
+
age: 25,
|
69
|
+
last_name: 'Smith',
|
70
|
+
is_verified: 0,
|
71
|
+
pic_big: 'http://avt.appsmail.ru/mail/john/_avatarbig',
|
72
|
+
vip: 0,
|
73
|
+
birthday: '01.01.1901',
|
74
|
+
link: 'http://my.mail.ru/mail/john/',
|
75
|
+
pic_128: 'http://avt.appsmail.ru/mail/john/_avatar128',
|
76
|
+
sex: 0,
|
77
|
+
pic: 'http://avt.appsmail.ru/mail/john/_avatar',
|
78
|
+
pic_small: 'http://avt.appsmail.ru/mail/john/_avatarsmall',
|
79
|
+
pic_180: 'http://avt.appsmail.ru/mail/john/_avatar180',
|
80
|
+
first_name: 'John',
|
81
|
+
pic_40: 'http://avt.appsmail.ru/mail/john/_avatar40?1229336384'
|
82
|
+
}
|
83
|
+
}
|
84
|
+
}
|
43
85
|
|
44
|
-
|
86
|
+
```
|
45
87
|
|
46
88
|
## License
|
47
89
|
|
@@ -1,5 +1,63 @@
|
|
1
|
-
module
|
1
|
+
module OmniAuth
|
2
2
|
module MailRu
|
3
|
-
VERSION = '0.0
|
3
|
+
VERSION = '1.0.0'
|
4
4
|
end
|
5
|
-
|
5
|
+
|
6
|
+
{
|
7
|
+
provider: 'mail_ru',
|
8
|
+
uid: '1111111111',
|
9
|
+
info: {
|
10
|
+
name: 'John Smith',
|
11
|
+
email: 'john@mail.ru',
|
12
|
+
nickname: 'JohnS',
|
13
|
+
first_name: 'John',
|
14
|
+
last_name: 'Smith',
|
15
|
+
image: 'http://avt.appsmail.ru/mail/john/_avatar50',
|
16
|
+
urls: {
|
17
|
+
'Mailru' => 'http://my.mail.ru/mail/john/'
|
18
|
+
}
|
19
|
+
},
|
20
|
+
credentials: {
|
21
|
+
token: '4ec9286c2f...',
|
22
|
+
refresh_token: '351456424ad7c5...',
|
23
|
+
expires_at: 1411054463,
|
24
|
+
expires: true
|
25
|
+
},
|
26
|
+
extra: {
|
27
|
+
raw_info: {
|
28
|
+
pic_50: 'http://avt.appsmail.ru/mail/john/_avatar50',
|
29
|
+
friends_count: 256,
|
30
|
+
show_age: 1,
|
31
|
+
has_photosafe: 0,
|
32
|
+
nick: 'JohnS',
|
33
|
+
is_friend: 0,
|
34
|
+
is_online: 1,
|
35
|
+
has_pic: 1,
|
36
|
+
email: 'john@mail.ru',
|
37
|
+
pic_190: 'http://avt.appsmail.ru/mail/john/_avatar190',
|
38
|
+
referer_id: '',
|
39
|
+
pic_32: 'http://avt.appsmail.ru/mail/john/_avatar32',
|
40
|
+
referer_type: '',
|
41
|
+
last_visit: '1410961776',
|
42
|
+
uid: '1111111111',
|
43
|
+
app_installed: 1,
|
44
|
+
status_text: '',
|
45
|
+
pic_22: 'http://avt.appsmail.ru/mail/john/_avatar22',
|
46
|
+
age: 25,
|
47
|
+
last_name: 'Smith',
|
48
|
+
is_verified: 0,
|
49
|
+
pic_big: 'http://avt.appsmail.ru/mail/john/_avatarbig',
|
50
|
+
vip: 0,
|
51
|
+
birthday: '01.01.1901',
|
52
|
+
link: 'http://my.mail.ru/mail/john/',
|
53
|
+
pic_128: 'http://avt.appsmail.ru/mail/john/_avatar128',
|
54
|
+
sex: 0,
|
55
|
+
pic: 'http://avt.appsmail.ru/mail/john/_avatar',
|
56
|
+
pic_small: 'http://avt.appsmail.ru/mail/john/_avatarsmall',
|
57
|
+
pic_180: 'http://avt.appsmail.ru/mail/john/_avatar180',
|
58
|
+
first_name: 'John',
|
59
|
+
pic_40: 'http://avt.appsmail.ru/mail/john/_avatar40?1229336384'
|
60
|
+
}
|
61
|
+
}
|
62
|
+
}
|
63
|
+
end
|
@@ -0,0 +1,57 @@
|
|
1
|
+
require 'omniauth-oauth2'
|
2
|
+
|
3
|
+
module OmniAuth
|
4
|
+
module Strategies
|
5
|
+
class MailRu < OmniAuth::Strategies::OAuth2
|
6
|
+
option :name, 'mail_ru'
|
7
|
+
|
8
|
+
option :client_options, {
|
9
|
+
site: 'https://connect.mail.ru/',
|
10
|
+
token_url: '/oauth/token',
|
11
|
+
authorize_url: '/oauth/authorize'
|
12
|
+
}
|
13
|
+
|
14
|
+
uid { access_token.params['x_mailru_vid'] }
|
15
|
+
|
16
|
+
info do
|
17
|
+
{
|
18
|
+
name: [raw_info['first_name'], raw_info['last_name']].join(' ').strip,
|
19
|
+
email: raw_info['email'],
|
20
|
+
nickname: raw_info['nick'],
|
21
|
+
first_name: raw_info['first_name'],
|
22
|
+
last_name: raw_info['last_name'],
|
23
|
+
image: (raw_info['has_pic'].to_i == 1) && raw_info['pic_50'] || raw_info['pic_small'],
|
24
|
+
urls: {
|
25
|
+
'Mailru' => raw_info['link']
|
26
|
+
}
|
27
|
+
}
|
28
|
+
end
|
29
|
+
|
30
|
+
extra do
|
31
|
+
{
|
32
|
+
raw_info: raw_info
|
33
|
+
}
|
34
|
+
end
|
35
|
+
|
36
|
+
def raw_info
|
37
|
+
@raw_info ||= access_token.get('http://www.appsmail.ru/platform/api', params: params).parsed.first
|
38
|
+
end
|
39
|
+
|
40
|
+
def params
|
41
|
+
params = {
|
42
|
+
app_id: options.client_id,
|
43
|
+
method: 'users.getInfo',
|
44
|
+
session_key: access_token.token
|
45
|
+
}
|
46
|
+
params[:sig] = signature(params)
|
47
|
+
|
48
|
+
params
|
49
|
+
end
|
50
|
+
|
51
|
+
def signature(params)
|
52
|
+
params = params.sort.reduce('') { |m, (key, value)| m << "#{key}=#{value}"; m }
|
53
|
+
Digest::MD5.hexdigest([uid, params, options.client_secret].join)
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
data/omniauth-mail_ru.gemspec
CHANGED
@@ -5,7 +5,7 @@ require 'omniauth/mail_ru/version'
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
7
|
spec.name = 'omniauth-mail_ru'
|
8
|
-
spec.version =
|
8
|
+
spec.version = OmniAuth::MailRu::VERSION
|
9
9
|
spec.authors = ['Andrey Skuryatin']
|
10
10
|
spec.email = ['andrey2004@gmai.com']
|
11
11
|
spec.summary = %q{OmniAuth strategy for Mail.ru}
|
@@ -18,5 +18,5 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
19
|
spec.require_paths = ['lib']
|
20
20
|
|
21
|
-
spec.add_dependency 'omniauth-oauth2', '~> 1.
|
21
|
+
spec.add_dependency 'omniauth-oauth2', '~> 1.0'
|
22
22
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: omniauth-mail_ru
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrey Skuryatin
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '1.
|
19
|
+
version: '1.0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '1.
|
26
|
+
version: '1.0'
|
27
27
|
description: OmniAuth strategy for Mail.ru
|
28
28
|
email:
|
29
29
|
- andrey2004@gmai.com
|
@@ -36,8 +36,9 @@ files:
|
|
36
36
|
- LICENSE.txt
|
37
37
|
- README.md
|
38
38
|
- Rakefile
|
39
|
-
- lib/omniauth
|
39
|
+
- lib/omniauth-mail_ru.rb
|
40
40
|
- lib/omniauth/mail_ru/version.rb
|
41
|
+
- lib/omniauth/strategies/mail_ru.rb
|
41
42
|
- omniauth-mail_ru.gemspec
|
42
43
|
homepage: https://github.com/andrey-skat/omniauth-mail_ru
|
43
44
|
licenses:
|