Auth.login('user_login', 'user_password')
.then((response) => {
if (response.status === 200) {
Promise.all([
// Записываем полученные данные
let exp_time = new Date().getTime() + response.data.expires_in * 1000;
SecureStore.setItemAsync('access_token', response.data.access_token),
SecureStore.setItemAsync('refresh_token', response.data.refresh_token),
SecureStore.setItemAsync('expiration_time', exp_time.toString()),
])
.then(() => doSomething());
} else {
// обработать ошибку
}
});
export default class Auth {
static async getAccessToken() {
let access_token = await SecureStore.getItemAsync('access_token');
let refresh_token = await SecureStore.getItemAsync('refresh_token');
let expiration_time = await SecureStore.getItemAsync('expiration_time');
let is_exipired = false;
if(new Date().getTime() < expiration_time) {
is_exipired = true;
}
if (!is_exipired) {
// выдать старый токен
return access_token;
} else {
return this.refreshAccessToken(refresh_token)
.then((response) => {
if (response.status === 200) {
// записать новые данные
let exp_time = new Date().getTime() + response.data.expires_in * 1000;
SecureStore.setItemAsync('access_token', response.data.access_token),
SecureStore.setItemAsync('refresh_token', response.data.refresh_token),
SecureStore.setItemAsync('expiration_time', exp_time.toString()),
// выдать новый токен
return response.data.access_token;
} else {
// токен обновить не получилось - разлогинить в приложении
return null;
}
});
}
}
static refreshAccessToken(refresh_token) {
let params = {
grant_type: 'refresh_token',
refresh_token: refresh_token,
client_id: 'api_client_id',
client_secret: 'api_client_secret',
};
return Api.callMethod('oauth/token', params, 'post');
}
static login(username, password) {
let params = {
grant_type: 'password',
username: username,
password: password,
client_id: 'api_client_id',
client_secret: 'api_client_secret',
scope: 'profile',
};
return Api.callMethod('oauth/token', params, 'post');
}
static logout(parameters = {}) {
return Auth.getAccessToken()
.then((access_token) => {
parameters['token'] = access_token;
return Api.callMethod('oauth/revoke', parameters, 'post');
});
}
}
export default class Api {
static async callMethod(path, parameters = {}, method = 'get', headers = {}) {
headers = {
'Accept': 'application/json',
'Content-Type': 'application/x-www-form-urlencoded',
...headers,
};
if (typeof parameters.access_token !== 'undefined') {
headers['Authorization'] = 'Bearer ' + parameters.access_token;
delete parameters.access_token;
}
let request = {
method: method,
url: 'https://httpbin.org/' + path,
headers: headers,
responseType: 'json',
data: parameters,
};
return axios(request)
.then((response) => {
return response;
});
}
}
export default class User {
static me(parameters = {}) {
return Auth.getAccessToken()
.then((access_token) => {
parameters['access_token'] = access_token;
return Api.callMethod('me', parameters);
});
}
}
const response = await fetch('https://api.vk.com/method/users.get?v=5.92&access_token=' + result.params.access_token);
const user = await response.json();
this.setState({
url: 'https://vk.com/id' + user.response[0].id,
name: user.response[0].first_name + ' ' + user.response[0].last_name,
});
$phone = $order->getPropertyCollection()->getPhone()->getValue();
https://<ваш_портал>.bitrix24.ru/oauth/authorize/?client_id=<Код_приложения>
Code
https://oauth.bitrix.info/oauth/token/?grant_type=authorization_code&client_id=<Код_приложения>&client_secret=<Ключ_приложения>&code=<Code_из_ответа_на_предыдущий_запрос>
access_token
и refresh_token
access_token
истечет, делаете запрос https://oauth.bitrix.info/oauth/token/?grant_type=refresh_token&client_id=<Код_приложения>&client_secret=<Ключ_приложения>&refresh_token=<Полученный_refresh_token>
document.getElementById('scale__line').style.width = 'n%';