Lấy Access Token
Ở V4 SDK sẽ cung cấp 2 api để app lấy access token sau khi đã login
Lấy bằng Oauth Code: App dùng oauthCode SDK trả về ở bước Login
ZaloSDK.Instance.getAccessTokenByOAuthCode( Context ctx,String oacode, String codeVerifier, new ZaloOpenAPICallback() {
@Override
public void onResult(JSONObject data) {
int err = data.optInt("error");
if (err == 0) {
//clearOauthCodeInfo(); //clear used oacode
access_token = data.optString("access_token");
refresh_token = data.optString("refresh_token");
long expires_in = Long.parseLong(data.optString("expires_in"));
//Store data token in app cache
....
}
}
});
Tham số:
- ctx: application context
- oacode: code sau khi login
- codeVerifier: code app tự gen. Tham khảo tại đây
- callback: override method onResult để nhận json trả về.
Data trả về:
- access_token: token để gọi api.
- refresh_token: token để làm mới access_token. Thời gian 3 tháng. Sau khi hết hiệu lực, đi lại flow login mới. Xác minh refresh token bằng api tại đây
- expires_in: thời gian hiệu lực của access_token (default 3600s)
Lưu ý: cần lưu lại Refresh Token để lấy lại AccessToken sau khi AccessToken hết hạn. Lấy bằng Refresh Token:
ZaloSDK.Instance.getAccessTokenByRefreshToken(Context ctx,String refresh_token, new ZaloOpenAPICallback() {
@Override
public void onResult(JSONObject data) {
int err = data.optInt("error");
if (err == 0) {
access_token = data.optString("access_token");
refresh_token = data.optString("refresh_token");
long expires_in = Long.parseLong(data.optString("expires_in"));
//Update new data token in app cache
....
}
}
});
Tham số:
- ctx: application context
- refreshToken: token lấy từ app cache.
- callback: override method onResult để nhận json trả về.
Lưu ý: RefreshToken chỉ sử dụng để lấy AccessToken được một lần duy nhất. Sau khi lấy AccessToken xong thì cần lưu lại RefreshToken mới được trả về kèm với AccessToken.