Мне предоставлен доступ (совместная работа) в папке. Мне нужно, чтобы ежедневно открывать папку и извлекать файлы из нее. Сейчас ядро разработчика, которое я создаю, истекает через 1 час. Есть ли способ получить authorization code
без первого этапа, для которого требуется пользовательский интерфейс. Таким образом, я могу обновлять доступ toke всякий раз, когда я извлекаю файлы.Как получить токен доступа без страницы авторизации окна
ответ
Вы должны иметь возможность обновить токен без получения кода авторизации. Когда токен доступа отправляется обратно, токен обновления также выдается вам.
{
"access_token": "T9cE5asGnuyYCCqIZFoWjFHvNbvVqHjl",
"expires_in": 3600,
"restricted_to": [],
"token_type": "bearer",
"refresh_token": "J7rxTiWOHMoSC1isKZKBZWizoRXjkQzig5C6jFgCVJ9bUnsUfGMinKBDLZWP9BgR"
}
Вы должны хранить этот маркер обновление где-то безопасная (брелка, зашифрованное хранилище данных, что-то подобное) и использовать его, чтобы обновить сессию, когда он истекает.
Вы можете сказать, что срок действия сессии истек, когда вы получаете 401 Несанкционированный отклик из поля для любого запроса API. И вы видите заголовок WWW-Authenticate со значением Bearer realm =.
поток должен выглядеть примерно так:
1) Вход в ящик и получить код авторизации
2) Обмен кода авторизации для доступа токен и токен обновления пары (это необходимо только сделать один раз!)
3) Хранить обновления маркера
4) Начинайте делать запросы с API
5) Когда 401 Несанкционированное принимается с заголовком WWW-Authenticate в ответе API, вопрос запрос POST на WWW-форм-urlencoded боксировать так:
curl https://www.box.com/api/oauth2/token \ -d 'grant_type=refresh_token&refresh_token={valid refresh token}&client_id={your_client_id}&client_secret={your_client_secret}' \ -X POST
В случае успеха, вы будете издал новый маркер доступа и обновить пару токенов. Сохраните новый токен обновления, замените старый токен доступа на новый и возобновите вызовы API из предыдущего неудачного вызова.
Надеюсь, что это поможет!
Нашел красивый пакет, который отвечает на мой вопрос. :) https://github.com/sookasa/box.py
Согласно Sikppy Той
Вы можете сохранить ваш первый маркер в файл и с помощью механизма обновления с помощью такого файла.
Вот пример
static String tokenUrl = "https://app.box.com/api/oauth2/token";
public String getTokenFromFile() throws Exception {
String path = this.tokenFilePath;
File file = new File(path);
String line = "", token = "";
try {
BufferedReader br = new BufferedReader(new FileReader(file));
while ((line = br.readLine()) != null) {
token = line;
}
br.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
String newRefleshToken = refleshToken(token);
String accessToken = newRefleshToken.substring(17, 49);
return accessToken;
}
Для refreshToken, вам нужно HTTPClient
private String refleshToken(String tokencode) throws Exception {
String accessToken = tokencode.substring(17, 49);
String refleshToken = tokencode.substring(105, 169);
tokencode = HttpURLConnectionExample.refreshToken(refleshToken);
writeTokenToTextFile(tokencode);
return tokencode;
}
public static String refreshToken(String newToken) throws Exception {
String urlParameters = "grant_type=refresh_token&refresh_token=" + newToken + "&client_id=" + client_id + "&client_secret=" + client_secret;
String result = sendPost(tokenUrl, urlParameters);
return result;
}
Позвольте мне показать метод sendPost
String sendPost(String url, String urlParameters) throws Exception {
URL obj = new URL(url);
HttpsURLConnection con = (HttpsURLConnection) obj.openConnection();
//add reuqest header
con.setRequestMethod("POST");
con.setRequestProperty("User-Agent", USER_AGENT);
con.setRequestProperty("Accept-Language", "en-US,en;q=0.5");
// Send post request
con.setDoOutput(true);
DataOutputStream wr = new DataOutputStream(con.getOutputStream());
wr.writeBytes(urlParameters);
wr.flush();
wr.close();
int responseCode = con.getResponseCode();
System.out.println("Response Code : " + responseCode);
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
return response.toString();
}
- 1. Как получить токен доступа, используя код авторизации?
- 2. Как получить токен авторизации
- 3. Как получить токен доступа без входа?
- 4. LinkedIn - Как получить токен доступа?
- 5. Как получить токен авторизации Wechat?
- 6. FB: получить токен доступа для общедоступной страницы
- 7. Недопустимый код авторизации при попытке получить токен доступа в spotipy
- 8. Получить токен доступа к Instagram без перегрузки страницы
- 9. API Google Диска: как я могу получить токен доступа без запроса авторизации каждый раз
- 10. Как получить токен доступа?
- 11. Получить токен долгосрочного доступа для страницы Facebook
- 12. Не удается получить токен доступа
- 13. Как обновить токен авторизации LinkedIn
- 14. Facebook - как получить постоянный токен доступа пользователя
- 15. "GitHub" "страницы" без авторизации?
- 16. Получить токен доступа без входа | Facebook`
- 17. Получить токен авторизации после HttpServletRequest.login()
- 18. Получить отмеченное фото без доступа токен
- 19. Получить токен доступа без входа в систему
- 20. Как получить токен доступа, используя токен обновления?
- 21. Facebook: Получить токен доступа для публикации в виде страницы
- 22. Как запросить токен авторизации Google?
- 23. Невозможно получить токен от сервера авторизации Thinktecture
- 24. Как запросить токен доступа от Battle.net OAuth с кодом авторизации?
- 25. Как получить токен доступа и токен-ключ доступа?
- 26. Как получить токен доступа Yelp
- 27. ios - Как получить токен доступа?
- 28. Как получить токен доступа программно?
- 29. Как получить кратковременный токен доступа?
- 30. Получите недействительный токен доступа для страницы Facebook
Я не считаю, что это отвечает на вопрос OPS , Вы делаете предположение, что он имеет токен обновления, который у него нет, только токен разработчика, идентификатор клиента и секрет. Кажется, что нет способа обновить токены разработчика, сделав эти вызовы oauth2. – alanwill