qq_conn 0.3.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.
Files changed (4) hide show
  1. checksums.yaml +7 -0
  2. data/lib/const.rb +23 -0
  3. data/lib/qq.rb +28 -0
  4. metadata +46 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: b72e3392b5721f7d6285689c4671af2ec9be3236
4
+ data.tar.gz: 265fe569cd0879b2eaf34f85bd57cc4224e7f5e9
5
+ SHA512:
6
+ metadata.gz: 79003bd9046c2c1b180beb361fc5800ca9d601daee2ea613c5e05d35a3e109f5088b1d1b84fb6a45b6b020cb8200be153b0ca9b5c370fa682386c4ca3e4ac455
7
+ data.tar.gz: 5f87e966a64b62f5e50d3e26f01768691c417084ca3d9f39eb1852d69dc68d5cc074d44491826b2567514d45b6fbfa363860fcb198ae364d3b70f0f0f14498e1
data/lib/const.rb ADDED
@@ -0,0 +1,23 @@
1
+ require 'yaml'
2
+ # define const and load APP_ID form qq_secrets.yml
3
+ module QQ
4
+ f = 'qq_secrets.yml'
5
+ return raise 'qq_secrets.yml not found!' unless File.exist?(f)
6
+ s = YAML.load_file(f)
7
+ APP_ID = s['APP_ID'].freeze
8
+ APP_KEY = s['APP_KEY'].freeze
9
+ RED_URL = s['RED_URL'].freeze
10
+ AUTH_URL = 'https://graph.qq.com/oauth2.0/authorize?' \
11
+ 'response_type=code&' \
12
+ "client_id=#{APP_ID}&" \
13
+ "redirect_uri=#{RED_URL}".freeze
14
+ TOKEN_URL = 'https://graph.qq.com/oauth2.0/token?' \
15
+ 'grant_type=authorization_code&' \
16
+ "client_id=#{APP_ID}&" \
17
+ "client_secret=#{APP_KEY}&" \
18
+ "redirect_uri=#{RED_URL}".freeze
19
+ OPENID_URL = 'https://graph.qq.com/oauth2.0/me?' \
20
+ 'access_token='.freeze
21
+ G_U_I_URL = 'https://graph.qq.com/user/get_user_info?'.freeze
22
+ VERSION = '0.3.1'.freeze
23
+ end
data/lib/qq.rb ADDED
@@ -0,0 +1,28 @@
1
+ require 'open-uri'
2
+ require 'json'
3
+ # QQ Connect
4
+ class Qq
5
+ require 'const.rb'
6
+ attr_reader :openid
7
+ # get APP_ID & APP_KEY from https://connect.qq.com/
8
+ def initialize(code)
9
+ # WARNING! return raise 'CSRF detected' if params[:state] != state
10
+ # get token
11
+ url = "#{QQ::TOKEN_URL}&code=#{code}"
12
+ @token = open(url).read[/(?<=access_token=)\w{32}/]
13
+ # get openid
14
+ url = QQ::OPENID_URL + @token
15
+ @openid = open(url).read[/\w{32}/]
16
+ # get auth
17
+ @auth = "access_token=#{@token}&" \
18
+ "oauth_consumer_key=#{QQ::APP_ID}&" \
19
+ "openid=#{@openid}"
20
+ end
21
+
22
+ def get_user_info
23
+ back = open(QQ::G_U_I_URL + @auth).read.force_encoding('utf-8')
24
+ back = JSON.parse(back)
25
+ return raise back['ret'].to_s + ': ' + back['msg'] if back['ret'] != 0
26
+ back
27
+ end
28
+ end
metadata ADDED
@@ -0,0 +1,46 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: qq_conn
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.3.1
5
+ platform: ruby
6
+ authors:
7
+ - '046569'
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2017-01-09 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: It is a simple way to connect to QQ Connect
14
+ email: '046569@046569.com'
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - lib/const.rb
20
+ - lib/qq.rb
21
+ homepage: https://github.com/046569/qq
22
+ licenses:
23
+ - MIT
24
+ metadata: {}
25
+ post_install_message:
26
+ rdoc_options: []
27
+ require_paths:
28
+ - lib
29
+ - lib
30
+ required_ruby_version: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
35
+ required_rubygems_version: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
40
+ requirements: []
41
+ rubyforge_project:
42
+ rubygems_version: 2.5.2
43
+ signing_key:
44
+ specification_version: 4
45
+ summary: QQ Connect SDK 4 Ruby Framework
46
+ test_files: []