2016-04-30 14 views
0

ich einen Twitter mit usertimeline Winkel zugreifen müssen abrufen zu ...

Alle Tasten sind richtig, es funktioniert mit PHP/curl, aber ich kann es nicht schaffen, damit es funktioniert innerhalb eckig. Ich verwende oauth-signature-js, dann eine $ http Anfrage. Ich möchte es so einfach wie möglich halten.

Der ng-Controller:

app.controller('twitterController', function($scope, $http){ 

    // VARIABLES 

    var screen_name = 'grapax_be'; 
    var count = 1; 
    var consumer_key    = 'xxxxxxxxxxxxxxxxxxxxxxxxx'; 
    var consumer_secret    = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'; 
    var oauth_access_token   = 'xxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'; 
    var oauth_access_token_secret = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'; 
    var oauth_timestamp    = Math.round((new Date()).getTime()/1000.0); 
    var oauth_nonce     = oauth_timestamp; 
    var oauth_signature_method  = 'HMAC-SHA1'; 
    var oauth_version    = '1.0' 


    // GENERATE OAUTH SIGNATURE 

    var httpMethod = 'GET'; 
    var url  = 'https://api.twitter.com/1.1/statuses/user_timeline.json'; 
    var parameters = { 
     oauth_consumer_key : consumer_key, 
     oauth_token : oauth_access_token, 
     oauth_nonce : oauth_nonce, 
     oauth_timestamp : oauth_timestamp, 
     oauth_signature_method : oauth_signature_method, 
     oauth_version : oauth_version, 
    }; 
    var oauth_signature = oauthSignature.generate(httpMethod, url, parameters, consumer_secret, oauth_access_token_secret, { encodeSignature: true }); 


    // HTTP REQUEST 

    var authorization_string = "OAuth " 
      + 'oauth_consumer_key="' + consumer_key + '", ' 
      + 'oauth_nonce="' + oauth_nonce + '", ' 
      + 'oauth_signature="' + oauth_signature + '", ' 
      + 'oauth_signature_method="' + oauth_signature_method + '", ' 
      + 'oauth_timestamp="' + oauth_timestamp + '", ' 
      + 'oauth_token="' + oauth_access_token + '", ' 
      + 'oauth_version="' + oauth_version + '"'; 

    $http.jsonp('https://api.twitter.com/1.1/statuses/user_timeline.json', { 
     headers: {'Authorization': authorization_string}, 
     params:{ 
      count: count, 
      screen_name: screen_name 
     } 
     }).success(function(res){ console.log('res:', res) }); 

}); 

Dies ist immer noch mich hier 400.

ist plunker

Irgendwelche Tipps, Fragen, Anmerkungen, sind ein Fehler geben willkommen .... Vielen Dank!

Johan

+1

Können Sie eine Plunker teilen? Wenn nicht, können Sie hier die CURL setzen (Sie können dies von Chrom-Netzwerk-Konsole erhalten) – pablorsk

+0

@pablorsk Hier ist ein Plunder: https://plnr.co/edit/kF9iqCOv31ZXuuy4vlSp Wenn ich sprach von der php/curl, ich Ich habe nur erwähnt, dass die Schlüssel (Consumer, Secret, ...) in einer anderen Umgebung arbeiten (PHP). Cheerz! – jDelforge

+0

Ich habe meine eigene Frage beantwortet und die von mir verwendete php/cURL-Methode eingeschlossen. Es wäre schön, wenn Sie es als nützlich markieren können, wenn Sie es so finden ... Cheerz .. – jDelforge

Antwort

1

Headers kann nicht in JSONP Anforderung eingestellt werden. Eine Lösung kann darin bestehen, dies zu implementieren, indem der HTTP-Client auf dem Server und nicht der Browser verwendet wird.

+0

Danke für den Tipp, ich werde weiter graben ... Ich glaube, ich möchte auf dem Browser bleiben ... – jDelforge

+0

OK Ich verstehe jetzt, ich sollte vermeiden, den Browser aus Sicherheitsgründen zu verwenden. Ich benutze Angular oben auf einem Wordpress/Apache Server. Bedeutet dies, dass ich in diesem Fall für http-Anfrage weiterhin php/curl verwenden sollte, also nutze Angular für diese Aufgabe nicht? – jDelforge

+1

Es hängt vom Sicherheitsrahmen ab. In diesem Szenario, in dem jsonp für die Authentifizierung verwendet wird, kann JavaScript im Allgemeinen das Problem nicht lösen. – Vaibhav