0
App.StaticConfig = Ember.Object.extend({
    URL: null,
    parameters: null,
    consumerSecret: null,
    encodedSignature: null,
    callback: null,
});


var staticConfig = App.StaticConfig.create({
    URL: 'https://api.twitter.com/oauth/request_token',
    parameters: {
        oauth_consumer_key : 'key',
        oauth_nonce : 'kllo9940pd9333jh',
        oauth_timestamp : '1191242096',
        oauth_signature_method : 'HMAC-SHA1',
        oauth_version : '1.0',
    },

    consumerSecret : 'key',
    encodedSignature : oauthSignature.generate('POST', URL, parameters, consumerSecret),

});

App.TwitterController = Ember.ObjectController.extend({

    actions: {  

        loginTwitter: function() {
            console.log('Event Clicked');
            return new Ember.RSVP.Promise(function(resolve, reject) {
            Ember.$.ajax({
                url:         'https://api.twitter.com/oauth/request_token',
                type:        'POST',
                contentType: "jsonp",
                headers: {
                    "Authorization": 'OAuth oauth_callback='+ staticConfig.get('callback') +', oauth_consumer_key="", oauth_nonce="kllo9940pd9333jh", oauth_signature='+ staticConfig.get('encodedSignature') +', oauth_signature_method="HMAC-SHA1", oauth_timestamp="1191242096", oauth_version="1.0"'
                },

                contentType: 'application/x-www-form-urlencoded'
            }).then(function(response) {
                console.log('Successed');
                console.log(response);
                resolve (response);
            }, function(xhr, status, error) {
                console.log(error);
                console.log('In Error');
                reject(error);
            });
        });
        },
    }
});

在下面的行中,我得到 ReferenceError: parameters is not defined 并且对于 consumerSecret encodedSignature 也相同: oauthSignature.generate('POST', URL, parameters, consumerSecret),

我也正确地创建了 oauth_signature 和 oauth_nonce。

4

2 回答 2

1

看起来encodedSignature可以很好地实现为计算属性:

encodedSignature : function () {
  var URL = this.get('URL');
  var parameters = this.get('parameters');
  var consumerSecret = this.get('consumerSecret');

  return oauthSignature.generate('POST', URL, parameters, consumerSecret)
}.property('URL', 'parameters', 'consumer_secret')
于 2014-10-01T13:01:30.727 回答
0

好吧,实际上parametersconsumerSecret没有在您的代码中设置:有您正在创建的对象的属性名称,而不是声明的变量。

于 2014-10-01T12:00:53.787 回答