0%

OpenAPI的介绍及其使用

API的全称是应用编程接口(Application Programming Interface),这并不是一个新概念,在计算机操作系统出现的早期就已经存在了。在互联网时代,把网站的服务封装成一系列计算机易识别的数据接口开放出去,供第三方开发者使用,这种行为就叫做开放网站的API,与之对应的,所开放的API就被称作openAPI。

OSCHINA API的使用

OSCHINA API:https://www.oschina.net/openapi/docs

1
2
3
4
5
6
7
8
- 什么是token
token(令牌)是一串唯一的字符串,通常由服务端生成,在注册完成时返回给客户端,用来标识此用户,客户端将此字符串存储在本地。在以后的网络请求时,客户端先查询本地的token,如果有则直接使用此令牌进行网络请求,没有则提示未登录,转到登陆注册界面。
此外,还可以在服务端或者客户端添加过期判别机制。

- token的作用
token可以显著减少服务端对用户表的查询,同时使用户不必每次都登陆,提高了系统的可用性与健壮性。

- 使用SharedPreferences保存token

1.创建应用

1
2
3
4
5
状态		正在审核
应用ID GCqPUbrIaoe7nUScRlet
应用私钥 YFJDhiYsnyI6qW8nzdAHYIPocZsPEff1
应用首页 https://fangjian98.github.io/
回调地址 http://192.168.0.106/

OSCHINA API

2.OAuth2 获取 AccessToken,应用通过 AccessToken 访问 OpenApi 使用用户数据。
采用 OAuth2 协议 认证,开放 osc 移动 app 版本所有接口

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
1.
# 用户授权码的回调地址直接获取code
# 构造Uri:/action/oauth2/authorize
# client_id(应用ID)和redirect_uri(回调地址)
https://www.oschina.net/action/oauth2/authorize?response_type=code&client_id=GCqPUbrIaoe7nUScRlet&redirect_uri=http://192.168.0.106/
# 返回用户授权码code
http://192.168.0.106/?code=iap9LL&state=

2.
# 应用服务器使用 oauth2_token API 向 OSChina 认证服务器发送用户授权码以及回调地址,OSChina 认证服务器返回 AccessToken
# 构造Uri:/action/openapi/token
# client_id(应用ID)和redirect_uri(回调地址)和client_secret(应用私钥)和code(用户授权码)
https://www.oschina.net/action/openapi/token?client_id=GCqPUbrIaoe7nUScRlet&client_secret=YFJDhiYsnyI6qW8nzdAHYIPocZsPEff1&grant_type=authorization_code&code=pZ6Ye2&redirect_uri=http://192.168.0.106/&dataType=json
# 返回AccessToken
{"access_token":"09a10176-7772-4577-8856-1b396f86e83b","refresh_token":"da728b79-3b0d-4062-961b-bd67c09ecbcd","uid":4470181,"token_type":"bearer","expires_in":604799}

3.使用AccessToken请求:参考OpenAPI文档即可
# 新闻news_list
# 构造Uri:/action/openapi/news_list
# access_token catalog page pageSize dataType
https://www.oschina.net/action/openapi/news_list?access_token=09a10176-7772-4577-8856-1b396f86e83b&catalog=2&page=1&pageSize=10&dataType=json


必选 类型及范围 说明 默认值
access_token true string oauth2_token获取的access_token
catalog true int 1-所有|2-综合新闻|3-软件更新 1
page/pageIndex true int 页数 1
pageSize true int 每页条数 20
dataType true string 返回数据类型['json'|'jsonp'|'xml'] json


# 新闻news_detail
# 构造Uri:/action/openapi/news_detail
# id access_token
https://www.oschina.net/action/openapi/news_detail?id=188164&access_token=6983b81e-5e2e-4685-888f-36abcf3f2da7&dataType=json

必选 类型及范围 说明 默认值
id true long 新闻编号 空
access_token false string oauth2_token获取的access_token 传则显示是否收藏 用户未登录则不传
dataType false string 返回数据类型 ['json'|'jsonp'|'xml'] json

其他平台开放API

Json解析

JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。JSON格式取代了xml给网络传输带来了很大的便利,是最常见的数据返回类型。

常见的Json解析库

  • org.json库
1
2
3
4
5
6
7
8
Android给我们提供的Json解析类,官方提供的JSONArray与JSONObject
这些API都存在于org.json包下,而我们用到的类有下面这些:
JSONObject: Json对象,可以完成Json字符串与Java对象的相互转换
JSONArray: Json数组,可以完成Json字符串与Java集合或对象的相互转换
JSONStringer: Json文本构建类,这个类可以帮助快速和便捷的创建JSON text, 每个
JSONStringer实体只能对应创建一个JSON text
JSONTokener:Json解析类
JSONException:Json异常
  • fastjson
  • gson

[1] https://www.cnblogs.com/lushimei/p/13436096.html