Azure Functions - 它可以与Office插件一起使用吗?

5

我相信有聪明的人可以让任何东西在Azure函数上运行,但为了运行Office Add-in,使用它是否有意义呢?我读到它是运行小代码片段的理想选择,而这正是我的Add-in目前在Azure作为Web应用程序运行的方式。


也许你必须自己尝试一下。 - Jeroen Heier
你确切想要实现什么? - alwayslearning
@Jeroen,这可能就是最终的结果,这并不是问题。我只是在想,这样做是否明智。我越来越多地观看Azure函数的视频,整个过程看起来非常棒。 - DutchDan
@Alwayslearning 我们在Excel中有一个小的插件,它会更新一些数据并生成一个图表。这些数据来自我们的API。 - DutchDan
1个回答

3
你不会使用Azure Functions来构建插件,但你绝对可以与常规网站一起使用它进行一些小型服务器端处理。
具体例子:对于我和同事正在构建的插件,我们需要获取用户的GitHub权限以代表用户发布Gists。GitHub使用“授权代码授予类型”流程(请参见https://developer.github.com/v3/oauth/),因此流程如下:
  1. 我们使用Add-ins中最近引入的Dialog API弹出对话框,引导用户访问https://github.com/login/oauth/authorize,这里显示了一个漂亮的登录界面。
  2. 如果用户登录并同意,GitHub会向我们发送授权代码。在客户端JavaScript中,该代码几乎没有用处,但是如果我们将其传递给Azure Function,则可以交换为访问令牌。这必须通过一些服务器端代码(即Web服务器或Azure Functions,作为超轻量级的Web服务器形式)来完成,以便我们可以传递Client Secret进行交换--这在可嗅探的客户端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();
    }
}

感谢Michael澄清我的问题并展示了在哪里可以最好地使用Azure Functions的代码! - DutchDan
你能告诉我为什么你说“你不会使用Azure Functions来构建插件”吗?(我对Azure和Excel插件都很新,所以只是好奇) - iatharva
@iatharva,Office Add-in基本上是一个网站(带有JS捆绑包的index.html页面),因此您需要类似Azure Web App这样的东西(https://azure.microsoft.com/en-us/services/app-service/web/)--或者您可以选择其他方式来部署您的网站。Azure Functions更多地涉及服务器端计算,例如公开REST API。 - Michael Zlatkovsky - Microsoft
明白了,谢谢。那很有帮助。 - iatharva

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接