Именно так выглядит SSID моей беспроводной сети. Но здесь не об этом. Приложение, упомянутое в предыдущем посте неожиданно для меня стало пользоваться спросом в определенных кругах в качестве примера авторизации с помощью OAuth 2.0. Разобравшись в том, как все работает на клиенте, заинтересовавшиеся разработчики решили на этом не останавливаться и обозначили свой интерес к серверной части. Для того, чтобы упростить понимание, я решил выложить исходники на GitHub, о чем сообщаю уважаемым читателям моего блога настоящим постом.
А вот собственно и сам "серверный код":
Хочу еще раз подчеркнуть, что я писал его что называется "just for fun" и разумеется не принимал во внимание никакие вопросы безопасности.
Предлагаю уважаемому читателю попробовать это чудо-приложение поломать. Некоторые товарищи уже предложили свои варианты, жду успешной реализации.
У кого получится - тот молодец :).
А вот собственно и сам "серверный код":
var sheetId = '1dgq89vY-tyliK112aSUeUCUZP4fvc8PE0hRr_U0j0Ws'; function doGet(e) { if (!e.parameters.token) { return ContentService.createTextOutput(JSON.stringify({error: 'Get out!'})).setMimeType(ContentService.MimeType.JSON); } var sh = SpreadsheetApp.openById(sheetId).getSheets()[0], data = sh.getDataRange().getValues(), user = getUser_(e.parameters.token), res = user.name ? data : data.map(function(arr) { return arr.slice(3); }); return ContentService.createTextOutput(JSON.stringify(res)).setMimeType(ContentService.MimeType.JSON); } function doPost(e) { if (!e.parameters.token) { return ContentService.createTextOutput(JSON.stringify({error: 'Get out!'})).setMimeType(ContentService.MimeType.JSON); } var user = getUser_(e.parameters.token); if (!user.name) { return ContentService.createTextOutput(JSON.stringify({error: 'Get out!'})).setMimeType(ContentService.MimeType.JSON); } var sh = SpreadsheetApp.openById(sheetId).getSheets()[0], data = JSON.parse(e.postData.contents), values = [new Date(), user.name, user.link, data['for'], data['sum']]; sh.getRange(sh.getLastRow() + 1, 1, 1, 5).setValues([values]); return ContentService.createTextOutput(JSON.stringify(sh.getDataRange().getValues())).setMimeType(ContentService.MimeType.JSON); } function getUser_(token) { var res = UrlFetchApp.fetch('https://www.googleapis.com/oauth2/v1/userinfo?alt=json&access_token=' + token, {muteHttpExceptions: true}); return JSON.parse(res); }
Хочу еще раз подчеркнуть, что я писал его что называется "just for fun" и разумеется не принимал во внимание никакие вопросы безопасности.
Предлагаю уважаемому читателю попробовать это чудо-приложение поломать. Некоторые товарищи уже предложили свои варианты, жду успешной реализации.
У кого получится - тот молодец :).
Комментариев нет:
Отправить комментарий
Комментарий будет опубликован после модерации