【发布时间】:2019-06-01 22:55:11
【问题描述】:
如何验证Access Token以及如何使用Access Token获取token信息?
这是验证访问令牌的网址吗?
【问题讨论】:
标签: android python ios oauth-2.0 access-token
如何验证Access Token以及如何使用Access Token获取token信息?
这是验证访问令牌的网址吗?
【问题讨论】:
标签: android python ios oauth-2.0 access-token
这是从令牌中获取数据的示例(示例来自 Azure auth - 但两者都使用 OAuth2 并不重要)。
这就是您从 Token 中提取信息的方式:
在 getAuthInteractiveCallback() 或 getAuthSilentCallback() 方法中:
private AuthenticationCallback getAuthSilentCallback() {
return new AuthenticationCallback() {
@Override
public void onSuccess(AuthenticationResult authenticationResult) {
/* Successfully got a token, call api now */
Log.d(TAG, "Successfully authenticated");
Log.d(TAG, "ID Token: " + authenticationResult.getIdToken());
Log.d(TAG, "ID Token: " + authenticationResult.getAccessToken());
try {
String token = authenticationResult.getIdToken();
String token2 = token.substring(token.indexOf('.') + 1, token.lastIndexOf('.'));
byte[] data = Base64.decode(token2, Base64.DEFAULT);
String text = new String(data, StandardCharsets.UTF_8);
JSONObject jsonObject = new JSONObject(text);
JSONArray jsonArray = new JSONArray(jsonObject.getString("emails"));
String eMail = jsonArray.get(0).toString();
Log.d(TAG, "eMail: " + eMail);
} catch (JSONException ex) { }
authResult = authenticationResult;
state.setAuthResult(authResult);
}
@Override
public void onError(MsalException exception) {
}
@Override
public void onCancel() {
}
};
}
另外可以获取iod、过期时间(exp)、授权时间(auth_time)、版本(ver)
【讨论】: