tinder_auth_fetcher 0.1.0 → 0.1.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.
- checksums.yaml +5 -5
- data/.gitignore +1 -8
- data/.ruby-version +1 -0
- data/Gemfile +0 -1
- data/README.md +2 -7
- data/lib/tinder_auth_fetcher.rb +13 -39
- data/tinder_auth_fetcher.gemspec +15 -13
- metadata +55 -14
- data/lib/tinder_auth_fetcher/version.rb +0 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 438b3eba202a9e4942452615b8e5070ae80dddaf2c94d7458bd130394289d9ef
|
4
|
+
data.tar.gz: b7a77feaa592c4d1201924a23d995c382a40b0892c7dfa357d5f47b4e04d3f13
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0df3d47f000bf489a7125e42abc7ccbc55ac4f4f164767a7d3c8fc290fe7bcc589f31936a2c7cddd7dae5fe09d2a6896b866d7b010be9c356c04d9b12e884f0a
|
7
|
+
data.tar.gz: 4d20c8447bd0fe5ffa022ee998e3dc00a5695853999e80c174e44d25b9a6f1de96ad0c2b4958804620f3507fbbd6d0d28dedc93716b43f0727c769145205e0c8
|
data/.gitignore
CHANGED
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
2.6.3
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -5,10 +5,7 @@ TinderAuthFetcher is inspired by [@andrewpeterprifer](https://github.com/andrewp
|
|
5
5
|
Thank you Andrew! :smile:
|
6
6
|
|
7
7
|
## Description
|
8
|
-
|
9
|
-
|
10
|
-
## Dependencies
|
11
|
-
- [Mechanize](https://github.com/sparklemotion/mechanize)
|
8
|
+
TinderAuthFetcher is used for fetching Facebook auth token to use Tinder API. TinderAuthFetcher automatically crawls Facebook and retrieves the token which is necessary to send a request to Tinder API. More information about Tinder API is [here](https://gist.github.com/rtt/10403467).
|
12
9
|
|
13
10
|
## Installation
|
14
11
|
|
@@ -39,9 +36,7 @@ Now all you need to do is just call #TinderAuthFetcher.fetch_token with target f
|
|
39
36
|
|
40
37
|
```ruby
|
41
38
|
token = TinderAuthFetcher.fetch_token(facebook_email, facebook_password)
|
42
|
-
```
|
43
|
-
|
44
|
-
**Notice**: TinderAuthFetcher raises `TinderAuthFetcher::FacebookAuthenticationError` with the message "Facebook Authentication failed. Check if you passed correct email and password" if it failed to log in, so you might want to deal with it.
|
39
|
+
```
|
45
40
|
|
46
41
|
## Test
|
47
42
|
I wrote only two test cases, one that asserts it raises `TinderAuthFetcher::FacebookAuthenticationError` when it fails to fetch the token and the one which asserts it fetches the token correctly.
|
data/lib/tinder_auth_fetcher.rb
CHANGED
@@ -1,50 +1,24 @@
|
|
1
|
-
require 'tinder_auth_fetcher/version'
|
2
|
-
require 'mechanize'
|
3
|
-
|
4
1
|
module TinderAuthFetcher
|
5
|
-
|
6
|
-
|
2
|
+
require 'selenium-webdriver'
|
3
|
+
require 'webdrivers'
|
7
4
|
|
8
|
-
|
5
|
+
URI = 'https://www.facebook.com/v2.6/dialog/oauth?redirect_uri=fb464891386855067%3A%2F%2Fauthorize%2F&scope=user_birthday%2Cuser_photos%2Cuser_education_history%2Cemail%2Cuser_relationship_details%2Cuser_friends%2Cuser_work_history%2Cuser_likes&response_type=token%2Csigned_request&client_id=464891386855067&ret=login&fallback_redirect_uri=221e1158-f2e9-1452-1a05-8983f99f7d6e&ext=1556057433&hash=Aea6jWwMP_tDMQ9y'
|
9
6
|
|
10
7
|
def self.fetch_token(email, password)
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
# Click OK
|
15
|
-
confirmed = confirm(logged_in)
|
8
|
+
options = Selenium::WebDriver::Chrome::Options.new(
|
9
|
+
prefs: { 'profile.default_content_setting_values.notifications': 2 }
|
10
|
+
)
|
16
11
|
|
17
|
-
|
18
|
-
confirmed.content.match(/access_token=(\w+)&expires_in=/)[1]
|
19
|
-
end
|
20
|
-
|
21
|
-
def self.prepare_agent
|
22
|
-
agent = Mechanize.new
|
23
|
-
agent.user_agent = USER_AGENT
|
24
|
-
agent
|
25
|
-
end
|
12
|
+
driver = Selenium::WebDriver.for :chrome, options: options
|
26
13
|
|
27
|
-
|
28
|
-
agent = prepare_agent
|
29
|
-
page = agent.get(URI)
|
14
|
+
driver.navigate.to URI
|
30
15
|
|
31
|
-
|
32
|
-
|
33
|
-
|
16
|
+
driver.find_element(:id, 'email').send_keys(email)
|
17
|
+
driver.find_element(:id, 'pass').send_keys(password)
|
18
|
+
driver.find_element(:id, 'loginbutton').click
|
34
19
|
|
35
|
-
|
20
|
+
driver.find_element(:name, '__CONFIRM__').click
|
36
21
|
|
37
|
-
|
38
|
-
raise TinderAuthFetcher::FacebookAuthenticationError, 'Facebook Authentication failed. Check if you passed correct email and password'
|
39
|
-
end
|
40
|
-
|
41
|
-
res
|
42
|
-
end
|
43
|
-
|
44
|
-
def self.confirm(logged_in)
|
45
|
-
confirm = logged_in.forms[0]
|
46
|
-
confirm.click_button(confirm.button_with(name: '__CONFIRM__'))
|
22
|
+
driver.page_source.match(/access_token=(\w+)&data_access_expiration_time=/)[1]
|
47
23
|
end
|
48
|
-
|
49
|
-
private_class_method :prepare_agent, :login, :confirm
|
50
24
|
end
|
data/tinder_auth_fetcher.gemspec
CHANGED
@@ -1,27 +1,29 @@
|
|
1
1
|
# coding: utf-8
|
2
2
|
lib = File.expand_path('../lib', __FILE__)
|
3
3
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
-
require 'tinder_auth_fetcher/version'
|
5
4
|
|
6
5
|
Gem::Specification.new do |spec|
|
7
|
-
spec.name =
|
8
|
-
spec.version =
|
9
|
-
spec.authors = [
|
10
|
-
spec.email = [
|
6
|
+
spec.name = 'tinder_auth_fetcher'
|
7
|
+
spec.version = '0.1.1'
|
8
|
+
spec.authors = ['Shuhei Kitagawa']
|
9
|
+
spec.email = ['shuhei.kitagawa@gmail.com']
|
11
10
|
|
12
11
|
spec.summary = %q{TinderAuthFetcher enables you to retrieve a Facebook authentication token, which is necessary to use Tinder API}
|
13
|
-
spec.homepage =
|
14
|
-
spec.license =
|
12
|
+
spec.homepage = 'https://github.com/shuheiktgw/tinder_auth_fetcher'
|
13
|
+
spec.license = 'MIT'
|
15
14
|
|
16
15
|
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
17
16
|
f.match(%r{^(test|spec|features)/})
|
18
17
|
end
|
19
|
-
spec.bindir =
|
18
|
+
spec.bindir = 'exe'
|
20
19
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
21
|
-
spec.require_paths = [
|
20
|
+
spec.require_paths = ['lib']
|
22
21
|
|
23
|
-
spec.add_dependency "
|
24
|
-
spec.
|
25
|
-
spec.add_development_dependency "
|
26
|
-
spec.add_development_dependency "
|
22
|
+
spec.add_dependency "selenium-webdriver", "~> 3.142"
|
23
|
+
spec.add_dependency "webdrivers", "~> 3.8"
|
24
|
+
spec.add_development_dependency "bundler", "~> 2.0"
|
25
|
+
spec.add_development_dependency "rake", "~> 12.0"
|
26
|
+
spec.add_development_dependency "rspec", "~> 3.8"
|
27
|
+
spec.add_development_dependency "pry"
|
28
|
+
spec.add_development_dependency "pry-byebug"
|
27
29
|
end
|
metadata
CHANGED
@@ -1,71 +1,113 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tinder_auth_fetcher
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Shuhei Kitagawa
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-07-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: selenium-webdriver
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '3.142'
|
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: '
|
26
|
+
version: '3.142'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: webdrivers
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '3.8'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '3.8'
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: bundler
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
30
44
|
requirements:
|
31
45
|
- - "~>"
|
32
46
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
47
|
+
version: '2.0'
|
34
48
|
type: :development
|
35
49
|
prerelease: false
|
36
50
|
version_requirements: !ruby/object:Gem::Requirement
|
37
51
|
requirements:
|
38
52
|
- - "~>"
|
39
53
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
54
|
+
version: '2.0'
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
56
|
name: rake
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
44
58
|
requirements:
|
45
59
|
- - "~>"
|
46
60
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
61
|
+
version: '12.0'
|
48
62
|
type: :development
|
49
63
|
prerelease: false
|
50
64
|
version_requirements: !ruby/object:Gem::Requirement
|
51
65
|
requirements:
|
52
66
|
- - "~>"
|
53
67
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
68
|
+
version: '12.0'
|
55
69
|
- !ruby/object:Gem::Dependency
|
56
70
|
name: rspec
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
58
72
|
requirements:
|
59
73
|
- - "~>"
|
60
74
|
- !ruby/object:Gem::Version
|
61
|
-
version: '3.
|
75
|
+
version: '3.8'
|
62
76
|
type: :development
|
63
77
|
prerelease: false
|
64
78
|
version_requirements: !ruby/object:Gem::Requirement
|
65
79
|
requirements:
|
66
80
|
- - "~>"
|
67
81
|
- !ruby/object:Gem::Version
|
68
|
-
version: '3.
|
82
|
+
version: '3.8'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: pry
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: pry-byebug
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
69
111
|
description:
|
70
112
|
email:
|
71
113
|
- shuhei.kitagawa@gmail.com
|
@@ -75,6 +117,7 @@ extra_rdoc_files: []
|
|
75
117
|
files:
|
76
118
|
- ".gitignore"
|
77
119
|
- ".rspec"
|
120
|
+
- ".ruby-version"
|
78
121
|
- ".travis.yml"
|
79
122
|
- CODE_OF_CONDUCT.md
|
80
123
|
- Gemfile
|
@@ -84,7 +127,6 @@ files:
|
|
84
127
|
- bin/console
|
85
128
|
- bin/setup
|
86
129
|
- lib/tinder_auth_fetcher.rb
|
87
|
-
- lib/tinder_auth_fetcher/version.rb
|
88
130
|
- tinder_auth_fetcher.gemspec
|
89
131
|
homepage: https://github.com/shuheiktgw/tinder_auth_fetcher
|
90
132
|
licenses:
|
@@ -105,8 +147,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
105
147
|
- !ruby/object:Gem::Version
|
106
148
|
version: '0'
|
107
149
|
requirements: []
|
108
|
-
|
109
|
-
rubygems_version: 2.6.8
|
150
|
+
rubygems_version: 3.0.3
|
110
151
|
signing_key:
|
111
152
|
specification_version: 4
|
112
153
|
summary: TinderAuthFetcher enables you to retrieve a Facebook authentication token,
|