2017-01-15 2 views
3

Я уверен, что есть умные люди, которые могут что-то сделать на функциях Azure, но имеет ли смысл вообще использовать его для запуска надстройки Office? Я читал, что он идеально подходит для запуска небольших фрагментов кода, и это то, что моя надстройка в настоящее время работает на Azure в качестве веб-приложения.Azure Functions - Может ли он использоваться с надстройками Office?

+0

Может быть, вы должны попробовать это сами. –

+0

чего вы хотите достичь именно? – alwayslearning

+0

@Jeroen Это, вероятно, то, к чему это приведет, и это не проблема. Мне было просто интересно, если бы это было разумно. Я смотрю все больше и больше видео по функциям Azure, и все это выглядит фантастически. – DutchDan

ответ

2

Вы не использовали бы функции Azure для для создания надстройки - но вы абсолютно можете использовать его в сочетании с обычным веб-сайтом для небольшой обработки на стороне сервера.

Конкретный пример: для надстройки, которую мы с коллегой и мной строили, нам нужно было получить разрешения пользователя GitHub для публикации Gists от имени пользователя. GitHub использует «разрешение код типа гранта» поток (см https://developer.github.com/v3/oauth/), так что поток будет выглядеть следующим образом:

  1. Мы совать диалог (с помощью недавно ввести Dialog API в надстройках), чтобы направить пользователь до https://github.com/login/oauth/authorize, который показывает симпатичный интерфейс входа в систему.
  2. Если пользователь подписывает и соглашается, GitHub отправляет нам код авторизации. Код мало подходит для нас на клиентском JavaScript, но если мы передадим его функции Azure, мы сможем обменять ее на токен доступа. Это должно быть сделано в некоторых версиях на стороне сервера (например, веб-сервере или Azure Functions, в виде суперлегкой формы веб-сервера), чтобы мы могли передавать в Client Client для обмена, что вполне естественно Не секрет, что клиентский JavaScript-клиент может быть секретным. Следовательно, помещаем этот код на сервер.

Если вам интересно посмотреть, что код был бы, вот оно:

var request = require('request'); 

module.exports = function (context, data) { 
    context.log('code: ' + data.code); 
    if ('code' in data) { 
     request.post({ 
      url: 'https://github.com/login/oauth/access_token', 
      json: { 
       client_id: '################', 
       client_secret: '################', 
       redirect_uri: '################', 
       code: data.code 
      } 
     }, function (err, httpResponse, body) { 
      if (err) { 
       context.log('error: ' + err); 
       context.res = { 
        body: { 
         status: 500, 
         error: err 
        } 
       } 
      } 
      else { 
       context.res = { body: body }; 
      } 

      context.done(); 
     }); 
    } 
    else { 
     context.res = { 
      status: 400, 
      body: { error: 'Please pass the GitHub code in the input object' } 
     }; 

     context.done(); 
    } 
} 
+0

Спасибо Майкл за разъяснение моего вопроса и кода, показывающего, где лучше всего использовать/использовать функции Azure! – DutchDan

Смежные вопросы