facebook-cli 1.6.1 → 1.6.2
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 +4 -4
- data/lib/fbcli.rb +47 -16
- data/lib/fbcli/auth.rb +17 -7
- data/lib/fbcli/facebook.rb +2 -2
- data/lib/fbcli/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 60d9c30c9452a91ea1f4a0dba2cfe4dbdc5aacab
|
4
|
+
data.tar.gz: ae1e56f576696173b59041215d60adabe4a58f8d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 18895ae4f97d5bb7a7f7716c3b123a07c6de1acfec8e5ee9804569f3bc08bfc87d56a42069e688cbf50f9806b21180809c5bf9ab6cbbd6a1376ce0aee8380f0c
|
7
|
+
data.tar.gz: f924eb53d4120dfd9b5fd9020652cf0192d34c9f873654406ec6a45ed728bbcb007f84c2fc47d0bebd3380135b20ed81de94f82724820f1680812cfac1683593
|
data/lib/fbcli.rb
CHANGED
@@ -16,7 +16,7 @@ program_desc "Facebook command line interface"
|
|
16
16
|
version FBCLI::VERSION
|
17
17
|
|
18
18
|
flag [:token], :desc => 'Provide Facebook access token', :required => false
|
19
|
-
flag [:pages, :p], :desc => '
|
19
|
+
flag [:pages, :p], :desc => 'Maximum number of pages of results to retrieve', :required => false, :type => Integer, :default_value => -1
|
20
20
|
|
21
21
|
def link(path)
|
22
22
|
"https://www.facebook.com/#{path}"
|
@@ -84,10 +84,16 @@ You must create and configure a Facebook application to interact with the Graph
|
|
84
84
|
|
85
85
|
- Create a new application at: https://developers.facebook.com/apps
|
86
86
|
- In the Settings tab:
|
87
|
-
- Click "Add Platform" and select "Website"
|
88
|
-
- Set "Site URL" to "http://localhost"
|
89
87
|
- Under "App Domains" add "localhost"
|
90
|
-
-
|
88
|
+
- Select a "Category" (any one will do)
|
89
|
+
- Click "Add Platform" and select "Website"
|
90
|
+
- Set "Site URL" to "http://localhost/"
|
91
|
+
- Click "Save Changes"
|
92
|
+
- Under "PRODUCTS" in the left sidebar:
|
93
|
+
- Click "+ Add Product"
|
94
|
+
- Under "Client OAuth Settings", set "Use Strict Mode for Redirect URIs" to "No"
|
95
|
+
- Under "Valid OAuth redirect URIs", add: "http://localhost:3333/"
|
96
|
+
- Click "Save Changes"
|
91
97
|
- In the "App Review" tab:
|
92
98
|
- Flip the switch to make your app live
|
93
99
|
- In the "Dashboard" tab:
|
@@ -122,33 +128,58 @@ command :config do |c|
|
|
122
128
|
end
|
123
129
|
|
124
130
|
desc "Request Facebook permissions and receive an API access token"
|
131
|
+
long_desc %(
|
132
|
+
Print a URL that launches a request to Facebook to allow the app you've created (by
|
133
|
+
following the setup instructions) to perform Facebook Graph actions on your behalf,
|
134
|
+
and start an HTTP server to listen for the authorization code.
|
135
|
+
|
136
|
+
Upon receiving the authorization code, immediately trade it in for an access
|
137
|
+
token and save it to a configuration file.
|
138
|
+
|
139
|
+
See: https://www.oauth.com/oauth2-servers/access-tokens/
|
140
|
+
|
141
|
+
Attention: if you choose to listen for the authorization token on a port number
|
142
|
+
different from the default value, make sure that in your app settings the same
|
143
|
+
port is specified under:
|
144
|
+
|
145
|
+
PRODUCTS > Facebook Login > Client OAuth Settings > Valid OAuth redirect URIs
|
146
|
+
)
|
125
147
|
command :login do |c|
|
126
|
-
c.flag [:port], :desc => 'Local TCP port to
|
148
|
+
c.flag [:port], :desc => 'Local TCP port to listen for authorization code', :default_value => '3333'
|
127
149
|
c.switch [:info], :desc => 'Show information about the current access token and exit', :negatable => false
|
128
150
|
c.action do |global_options, options|
|
129
151
|
if options['info']
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
152
|
+
if $config['access_token'].nil?
|
153
|
+
puts "Either provide an access token via the --token parameter or obtain one by running:"
|
154
|
+
puts
|
155
|
+
puts " #{APP_NAME} login"
|
156
|
+
else
|
157
|
+
begin
|
158
|
+
puts "Your access token: #{$config['access_token']}"
|
135
159
|
puts
|
136
|
-
|
160
|
+
|
161
|
+
FBCLI::request_token_info do |data|
|
162
|
+
puts "It was issued on: #{date_str(data['issued_at'])}"
|
163
|
+
puts
|
164
|
+
puts "It is valid until: #{date_str(data['expires_at'])}"
|
165
|
+
puts
|
166
|
+
puts "Permissions:\n - #{data['scopes'].join("\n - ")}"
|
167
|
+
end
|
168
|
+
rescue
|
169
|
+
puts "Your access token does not appear to be valid or may have expired."
|
137
170
|
end
|
138
|
-
rescue
|
139
|
-
puts "Your access token does not appear to be valid for this application."
|
140
171
|
end
|
141
172
|
else
|
142
|
-
token = FBCLI::
|
173
|
+
token = FBCLI::login($config['app_id'], $config['app_secret'], options['port'])
|
143
174
|
|
144
175
|
if not token.nil?
|
145
176
|
$config['access_token'] = token
|
146
177
|
|
147
178
|
save_config
|
148
179
|
|
149
|
-
puts "Your access token
|
180
|
+
puts "Your access token has been saved to #{CONFIG_FILE}"
|
150
181
|
puts
|
151
|
-
puts "To find out when it is scheduled to expire, run:"
|
182
|
+
puts "To see it and find out when it is scheduled to expire, run:"
|
152
183
|
puts
|
153
184
|
puts " #{APP_NAME} login --info"
|
154
185
|
puts
|
data/lib/fbcli/auth.rb
CHANGED
@@ -6,9 +6,11 @@ require 'json'
|
|
6
6
|
module FBCLI
|
7
7
|
API_VERSION = "2.10"
|
8
8
|
|
9
|
-
def self.
|
9
|
+
def self.login(app_id, app_secret, local_port)
|
10
|
+
redirect_uri = "http://localhost:#{local_port}/"
|
11
|
+
|
10
12
|
uri = "https://www.facebook.com/dialog/oauth?client_id=#{app_id}" +
|
11
|
-
"&redirect_uri
|
13
|
+
"&redirect_uri=#{redirect_uri}" +
|
12
14
|
"&scope=user_likes,user_friends,user_posts,user_photos,user_videos,user_events,publish_actions"
|
13
15
|
|
14
16
|
puts <<-EOM
|
@@ -16,12 +18,12 @@ Open this URL in a web browser and allow access to the Facebook Graph on behalf
|
|
16
18
|
|
17
19
|
#{uri}
|
18
20
|
|
19
|
-
Waiting to receive authorization code on port #{
|
21
|
+
Waiting to receive authorization code on port #{local_port}...
|
20
22
|
|
21
23
|
EOM
|
22
24
|
|
23
25
|
server = WEBrick::HTTPServer.new(
|
24
|
-
:Port =>
|
26
|
+
:Port => local_port,
|
25
27
|
:SSLEnable => false,
|
26
28
|
:Logger => WEBrick::Log.new(File.open(File::NULL, 'w')),
|
27
29
|
:AccessLog => []
|
@@ -33,7 +35,10 @@ Waiting to receive authorization code on port #{port}...
|
|
33
35
|
key, value = req.query_string.split '=', 2
|
34
36
|
|
35
37
|
if key == "code"
|
36
|
-
|
38
|
+
puts "Received authorization code. Exchanging it for an access token..."
|
39
|
+
puts
|
40
|
+
|
41
|
+
access_token = get_access_token(app_id, value, app_secret, redirect_uri)
|
37
42
|
else
|
38
43
|
puts "Received unexpected request: #{req.query_string}"
|
39
44
|
end
|
@@ -52,10 +57,15 @@ Waiting to receive authorization code on port #{port}...
|
|
52
57
|
access_token
|
53
58
|
end
|
54
59
|
|
55
|
-
def self.get_access_token(
|
60
|
+
def self.get_access_token(app_id, auth_code, app_secret, redirect_uri)
|
61
|
+
# The redirect_uri doesn't play the same role as in capturing the auth code, however
|
62
|
+
# it must match the one used in the previous case, otherwise the server will reject
|
63
|
+
# the request.
|
64
|
+
#
|
65
|
+
# See: https://www.oauth.com/oauth2-servers/access-tokens/authorization-code-request/
|
56
66
|
auth_uri = "https://graph.facebook.com/v#{API_VERSION}/oauth/access_token?" +
|
57
67
|
"client_id=#{app_id}" +
|
58
|
-
"&redirect_uri
|
68
|
+
"&redirect_uri=#{redirect_uri}" +
|
59
69
|
"&client_secret=#{app_secret}" +
|
60
70
|
"&code=#{auth_code}"
|
61
71
|
|
data/lib/fbcli/facebook.rb
CHANGED
@@ -48,9 +48,9 @@ Run: #{APP_NAME} login
|
|
48
48
|
}
|
49
49
|
end
|
50
50
|
|
51
|
-
def self.request_token_info
|
51
|
+
def self.request_token_info(access_token = $config['access_token'])
|
52
52
|
api_call lambda { |api|
|
53
|
-
api.debug_token
|
53
|
+
api.debug_token access_token do |res|
|
54
54
|
yield res['data']
|
55
55
|
end
|
56
56
|
}
|
data/lib/fbcli/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: facebook-cli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.6.
|
4
|
+
version: 1.6.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ildar Sagdejev
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-10-
|
11
|
+
date: 2017-10-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: koala
|