Если вызов для получения токена доступа - asyn c, вы не можете просто получить его сразу. Это потому, что код внутри вызова get
выполняется в другом потоке, в то время как ваш код продолжает работать. Это выглядело бы так:
public String getToken() {
String temp; // 1. you make a variable
Session.INSTANCE.get((accessToken) -> { // 2. get call starts processing
temp = accessToken;
});
return temp; // 3. now you return your uninitialized variable
}
, а затем после завершения вашей функции происходит обратный вызов токена, но уже поздно, вы уже ничего не вернули. Если вы запустите его в отладчике с точкой останова на каждой строке и продолжите работу, вы увидите порядок выполнения кода, и это может иметь больше смысла.
Лучше всего просто обработать то, что вам нужно в обратном вызове вместо того, чтобы возвращать его в getToken()
...
Не уверен, что вы хотели получить ответ в kotlin или java, но ваш код может выглядеть примерно так в kotlin:
Session.get { token ->
onToken(token)
}
где onToken
обрабатывает любой код, который вам нужен для токена для
fun onToken(token: String) {
// do whatever code you would've executed after getToken() here
}
Надеюсь, я все объяснил хорошо.