## 1、獲取 Accesstoken
后端可以調用這個接口再封裝個接口,讓自己業務系統的前端來獲取 Accesstoken,appid 和 secret 為了安全和方便盡量放在后端使用,獲取的 Accesstoken 用來做權限驗證,比如下面接口的 Authorization 。
#
~~~[api:notDebug]
get:/v1/token
*appid=a44r4aMbO7BZ1NoW#申請的appid
*secret=a4474wRq9BwujRV7hM4SGH0QMyrEJF5J#申請的appsecret
*grant_type=client_credential#類型
<<<
success
{
"accessToken": "a447bdDAUeKORvmt",
"expires": 7200
}
<<<
403
{
"status": 403,
"error": "SecretIsInvalid",
"message": "無效的 secret"
}
~~~
#
##### C#訪問示例代碼:
~~~CSharp
var client = new RestClient("http://gateway.api.yun2win.com/v1/token?grant_type=client_credential&appid=a44r4aMbO7BZ1NoW&secret=a4474wRq9BwujRV7hM4SGH0QMyrEJF5J");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
request.AlwaysMultipartFormData = true;
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
~~~
#
##### Java訪問示例代碼:
~~~ java
OkHttpClient client = new OkHttpClient().newBuilder().build();
Request request = new Request.Builder()
.url("http://gateway.api.yun2win.com/v1/token?grant_type=client_credential&appid=a44r4aMbO7BZ1NoW&secret=a4474wRq9BwujRV7hM4SGH0QMyrEJF5J")
.method("GET", null)
.build();
Response response = client.newCall(request).execute();
~~~
#
#### Nodejs訪問示例代碼:
~~~javascript
var unirest = require('unirest');
var req = unirest('GET', 'http://gateway.api.yun2win.com/v1/token?grant_type=client_credential&appid=a44r4aMbO7BZ1NoW&secret=a4474wRq9BwujRV7hM4SGH0QMyrEJF5J')
.end(function (res) {
if (res.error) throw new Error(res.error);
console.log(res.raw_body);
});
~~~
#
## 2、獲取用戶信息
人臉識別成功后,返回給客戶端 `identityToken` ,客戶端可以根據這個 `identityToken` 去自己的業務系統后端獲取用戶的信息,比如可以從后端獲取到此人信息那么客戶端就執行登錄成功業務邏輯,若沒有,那提示用戶注冊或者綁定,可根據自己的業務系統來具體實現。ps:此接口的在線調試暫不可用,`identityToken`是拼接在`url`后面的,而不是拼接在`url`后面的參數,所以此處需要開發者自己注意,不要搞錯了。
#
~~~[api:notDebug]
get:/api/face-login/account/:identityToken
identityToken=9bqzkNIrbeEpA5Ar#身份token,由人臉識別成功返回的
<<<
success
{
"id": "9bqzkNIrbeEpA5Ar",
"uid": "f3292423", //富士康工號
"name": "張德強", //姓名
"expire": "2019-12-26T06:25:02.000Z",
"createdAt": "2019-12-26T06:20:02.000Z",
"updatedAt": "2019-12-26T06:20:02.000Z"
}
<<<
401
錯誤一:
{
"status": 401,
"error": "AccessTokenNoExist",
"message": "必須有 accessToken"
}
錯誤二:
{
"status": 401,
"error": "AccessTokenIsInvalid",
"message": "無效的?accessToken"
}
錯誤三:
{
"status": 401,
"error": "AccessTokenHasExpired",
"message": "accessToken 已過期"
}
<<<
403
錯誤一:
{
"status": 403,
"error": "SecretIsInvalid",
"message": "無效的 secret"
}
錯誤二:
{
"status": 403,
"error": "SecretHasDisabled",
"message": "secret 已被禁用"
}
錯誤三:
{
"status": 403,
"error": "SecretError",
"message": "secret 狀態異常"
}
錯誤四:
{
"status": 403,
"error": "LimitExceeded",
"message": "已超出用量限制"
}
<<<
500
錯誤一:
{
error: "Identity_Token_Invalid",
message: "identityToken無效",
status:500
}
錯誤二:
{
error: "Identity_Token_In_Expire",
message: "identityToken無效已過期",
status:500
}
~~~
#
##### C#訪問示例代碼:
~~~CSharp
var client = new RestClient("http://gateway.api.yun2win.com/api/face-login/account/9bqzkNIrbeEpA5Ar");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer a447bdDAUeKORvmt"); // 這里的a447bdDAUeKORvmt就是接口1取得的access_token
request.AlwaysMultipartFormData = true;
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
~~~
#
##### Java訪問示例代碼:
~~~ java
OkHttpClient client = new OkHttpClient().newBuilder().build();
Request request = new Request.Builder()
.url("http://gateway.api.yun2win.com/api/face-login/account/9bqzkNIrbeEpA5Ar")
.method("GET", null)
.addHeader("Authorization", "Bearer a447bdDAUeKORvmt") // 這里的a447bdDAUeKORvmt就是接口1取得的access_token
.build();
Response response = client.newCall(request).execute();
~~~
#
#### Nodejs訪問示例代碼:
~~~javascript
var unirest = require('unirest');
var req = unirest('GET', 'http://gateway.api.yun2win.com/api/face-login/account/9bqzkNIrbeEpA5Ar')
.headers({
'Authorization': 'Bearer a447bdDAUeKORvmt' // 這里的a447bdDAUeKORvmt就是接口1取得的access_token
})
.end(function (res) {
if (res.error) throw new Error(res.error);
console.log(res.raw_body);
});
~~~