Class: Baidu::OAuth::RESTClient
- Inherits:
-
Object
- Object
- Baidu::OAuth::RESTClient
- Includes:
- Support::Request
- Defined in:
- lib/baidu/oauth/rest_client.rb
Overview
通过百度开放平台提供的REST API,第三方应用可以获取到百度用户的用户资料、好友关系等基本信息,以及今后百度开放的其他任何数据,但前提是应用必须获得到百度开放平台和百度用户的授权。
Constant Summary
Constants included from Support::Request
Support::Request::MAX_REDIRECT_LIMIT
Instance Method Summary collapse
-
#app_user?(options = {}) ⇒ Boolean
判定当前用户是否已经为应用授权.
-
#are_friends(uids1, uids2) ⇒ Array
获得指定用户之间好友关系.
-
#expire_session ⇒ Boolean
使access_token,session_key过期.
-
#get_friends(options = {}) ⇒ Array
返回用户好友资料.
-
#get_info ⇒ Hash
返回用户详细资料.
-
#get_logged_in_user ⇒ Hash
获取当前登录用户的简单信息.
-
#has_app_permission?(ext_perm, uid = nil) ⇒ Boolean
判断指定用户是否具有某个数据操作权限.
-
#has_app_permissions(ext_perms, uid = nil) ⇒ Hash
判断指定用户是否具有某一批数据操作权限.
-
#initialize(access_token_or_session) ⇒ RESTClient
constructor
创建一个 REST API Client 实例.
-
#query_ip(*ips) ⇒ Hash
查询IP地址所在地区.
-
#revoke_authorization(uid = nil) ⇒ Boolean
撤销用户授予第三方应用的权限.
Methods included from Support::Request
Constructor Details
#initialize(access_token) ⇒ RESTClient #initialize(session) ⇒ RESTClient
创建一个 REST API Client 实例
21 22 23 24 25 26 27 28 29 |
# File 'lib/baidu/oauth/rest_client.rb', line 21 def initialize(access_token_or_session) @access_token = case access_token_or_session when String then access_token_or_session when Baidu::Session then access_token_or_session.access_token else raise ArgumentError, 'need a String or Baidu::Session' end @site = Baidu::OAuth::SITE end |
Instance Method Details
#app_user?(options = {}) ⇒ Boolean
判定当前用户是否已经为应用授权
112 113 114 115 |
# File 'lib/baidu/oauth/rest_client.rb', line 112 def app_user?(={}) rest = api_request '/passport/users/isAppUser', rest[:result] == '1' end |
#are_friends(uid1, uid2) ⇒ Array #are_friends(uids1, uids2) ⇒ Array
获得指定用户之间好友关系
获得指定用户之间是否是好友关系。第一个数组指定一半用户,第二个数组指定另外一半,两个数组必须同样的个数,一次最多可以查20个
232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 |
# File 'lib/baidu/oauth/rest_client.rb', line 232 def are_friends(uids1, uids2) body = {} case when uids1.is_a?(String) && uids2.is_a?(String) body[:uids1], body[:uids2] = uids1, uids2 when uids1.is_a?(Array) && uids2.is_a?(Array) raise ArgumentError, 'not the same size of array' unless uids1.size == uids2.size body[:uids1], body[:uids2] = uids1.join(','), uids2.join(',') else raise ArgumentError, 'not the same types' end rest = api_request '/friends/areFriends', body rest.each do |h| h[:are_friends] = h[:are_friends] == '1' h[:are_friends_reverse] = h[:are_friends_reverse] == '1' end end |
#expire_session ⇒ Boolean
使access_token,session_key过期
使用户授予的access_token和session_key过期
257 258 259 260 |
# File 'lib/baidu/oauth/rest_client.rb', line 257 def expire_session rest = api_request '/passport/auth/expireSession' rest[:result] == '1' end |
#get_friends(options = {}) ⇒ Array
TODO: check return value
返回用户好友资料
根据用户id以及在百度的相应的操作权限(可以是多个权限半角逗号隔开)来判断用户是否可以进行此操作
192 193 194 |
# File 'lib/baidu/oauth/rest_client.rb', line 192 def get_friends(={}) api_request '/friends/getFriends', end |
#get_info ⇒ Hash
如果存储用户信息的话,请大家以百度用户uid为主键
返回用户详细资料
101 102 103 |
# File 'lib/baidu/oauth/rest_client.rb', line 101 def get_info api_request '/passport/users/getInfo' end |
#get_logged_in_user ⇒ Hash
如果存储用户信息的话,请大家以百度用户uid为主键
获取当前登录用户的简单信息
获取当前登录用户的用户uid、用户名和头像。
53 54 55 |
# File 'lib/baidu/oauth/rest_client.rb', line 53 def get_logged_in_user api_request '/passport/users/getLoggedInUser' end |
#has_app_permission?(ext_perm, uid = nil) ⇒ Boolean
判断指定用户是否具有某个数据操作权限
根据用户id以及在百度的相应的操作权限(单个权限,例如接收email等)来判断用户是否可以进行此操作。
127 128 129 130 131 |
# File 'lib/baidu/oauth/rest_client.rb', line 127 def (ext_perm, uid=nil) body = { ext_perm: ext_perm, uid: uid } rest = api_request '/passport/users/hasAppPermission', body rest[:result] == '1' end |
#has_app_permissions(ext_perm, uid = nil) ⇒ Hash #has_app_permissions(ext_perms, uid = nil) ⇒ Hash
判断指定用户是否具有某一批数据操作权限
根据用户id以及在百度的相应的操作权限(可以是多个权限半角逗号隔开)来判断用户是否可以进行此操作
153 154 155 156 157 158 159 160 161 |
# File 'lib/baidu/oauth/rest_client.rb', line 153 def (ext_perms, uid=nil) body = { ext_perms: ext_perms, uid: uid } if ext_perms.is_a? Array body[:ext_perms] = ext_perms.join ',' end rest = api_request '/passport/users/hasAppPermissions', body rest.each { |k, v| rest[k] = v == '1' } end |
#query_ip(*ips) ⇒ Hash
查询IP地址所在地区
294 295 296 |
# File 'lib/baidu/oauth/rest_client.rb', line 294 def query_ip(*ips) api_request('/iplib/query', { ip: ips.join(',') }, :get) end |
#revoke_authorization(uid = nil) ⇒ Boolean
撤销用户授予第三方应用的权限
268 269 270 271 |
# File 'lib/baidu/oauth/rest_client.rb', line 268 def (uid=nil) rest = api_request('/passport/auth/revokeAuthorization', {uid: uid}) rest[:result] == '1' end |