hello.js:是否可以动态设置提供者的设置?

时间:2015-06-09 13:17:47

标签: javascript oauth oauth-2.0 oauth2client hello.js

我为hello.js实现了一个新模块。 我需要authgrantbase是动态的。 有没有办法从hello.init()调用设置/覆盖这些值?

我的模块看起来像这样:

(function(hello) {

    hello.init({

        my_service_name: {

            name: 'My-Service-Name',

            oauth: {
                version: 2,
                auth: 'http://mydomain/oauth/authorize',
                grant: 'http://mydomain/oauth/token'
            },

            scope: {
                basic: ['basic_scope']
            },

            base: 'http://mydomain/',

            xhr: function(p) {

                if (p.method !== 'get' && p.data) {

                    // Serialize payload as JSON
                    p.headers = p.headers || {};
                    p.headers['Content-Type'] = 'application/json';
                    if (typeof (p.data) === 'object') {
                        p.data = JSON.stringify(p.data);
                    }
                }

                return true;
            }
        }
    });

})(hello);

和我的hello.init()电话:

hello.init({
    my_service_name: server.consumerKey
}, {
    redirect_uri : server.callbackUrl,
});

用例是我正在开发的应用程序将与多个服务器通信,因此我无法对模块文件中的URL进行硬编码。

1 个答案:

答案 0 :(得分:0)

我发现我可以通过在oauth调用中传递整个hello.init()对象来覆盖默认设置:

hello.init({
    my_service_name: {
        id: server.consumerKey,
        oauth: {
            version: 2,
            auth: server.auth_url,
            grant: server.token_url
        },
        base: server.baseUrl
    }
}, {
    redirect_uri : server.callbackUrl
});