Я строю приложение с Java Spring Boot + jQuery, используя Liffsdk для моего приложения чата. < /p>
@GetMapping
public String init(@RequestParam String liffChannelId,
@RequestParam String messageChannelId,
@RequestParam String isInit,
@RequestParam String idToken,
HttpServletRequest request, Model model) {
if (Objects.isNull(isInit)) {
return "chat_ui";
}
ChatForm form =chatHelper.init(liffChannelId, messageChannelId, idToken, request);
model.addAttribute("form", form);
return "chat_ui";
}
< /code>
и в моем JS: < /p>
$(document).ready(function () {
const urlParams = new URLSearchParams(window.location.search);
const isInit = urlParams.get("isInit");
if (!isInit) {
initLiffApp();
}
});
function initLiffApp() {
const messageChannelId = new URLSearchParams(window.location.search).get("messageChannelId");
const liffChannelId = new URLSearchParams(window.location.search).get("liffChannelId");
const liffId = new URLSearchParams(window.location.search).get("liffId");
liff
.init({
liffId: liffId
})
.then(() => {
const idToken = liff.getIDToken();
if (!idToken) {
alert("Failed to get ID Token");
return;
}
sendToServer(liffChannelId, messageChannelId, idToken);
})
.catch(err => {
console.error("LIFF error", err);
});
}
function sendToServer(liffChannelId, messageChannelId, idToken) {
const redirectUrl = `/chat?liffChannelId=${encodeURIComponent(liffChannelId)}&messageChannelId=${encodeURIComponent(messageChannelId)}&isInit=1&idToken=${encodeURIComponent(idToken)}`;
window.location.href = redirectUrl;
}
< /code>
Развертываемое приложение дважды вызовет сервер. При инициализации, исходя из того, передается ли переменная ISINIT или нет, она вернется к интерфейсу. Затем в JS он позвонит Liff Server, чтобы получить идентификацию. В настоящее время он позвонит на сервере во второй раз с помощью isInit variable = true, а затем сервер продолжит обработку. Большое спасибо
Подробнее здесь: https://stackoverflow.com/questions/797 ... on-android