老师让我基于易班开发一个体测成绩查询的功能。易班垃圾文档毁我青春,记下此文,以供后来者观之。(不断更新中)
机构号
机构号的ACCESS_TOKEN获取的文档有大问题。
它的文档如是说,post到http://mp.yiban.cn/cgibin/oauth/token?grant_type=client_credentials&appid=APPID&secret=APPSECRET
, 然而经过我的实验,并不是如此。
应该把
{
"grant_type": "client_credentials",
"appid": "APPID",
"secret": "APPSECRET"
}
作为Post方法的Body发到http://mp.yiban.cn/cgibin/oauth/token
。当我成功的那一刻,我的心里只有五个字,五个字——易班操你妈。
机构号那个OAuth2都是假的,全都是假的。我打电话问客服,他们说是没有这个权限的。
OAuth2.0网页授权
经过我的不断实验,发现mp.yiban.cn里面的文档都是假的,要想OAuth2.0授权,只能去o.yiban.cn申请网站/应用等等来授权。
获取用户信息
领导要求,每个人都只能查到自己的成绩。那么问题来了,我该如何认证身份?
仔细的查看过易班的文档,只在校级权限里提到了,使用用户的access_token去请求https://openapi.yiban.cn/user/verify_me
就能获取到学校认证信息。然而我此时连授权都没有搞出来,只好另寻它途。
在机构号后台我找到了一个有用的地方——信息查询。我能从这里直接用用户的OpenID拿到用户的所有信息。这样一来事情解决了。当用户对机构号发送消息的时候,机构号能够获取到发送者的OpenID,然后从后台抓取对应的个人信息,再从数据库里查询,就可以完成领导要求的任务。