Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Neue Twitter Api (https://www.delphipraxis.net/175801-neue-twitter-api.html)

DavidKlimas 20. Jul 2013 09:42

Neue Twitter Api
 
Hallo zusammen,

Für die letzten Jahre hab ich meine App benutzt um öffentliche Tweets als RSS Feed auzugeben. Das ging relativ einfach mit dem aufrufen folgender links :

Code:
https://api.twitter.com/1/statuses/user_timeline.rss?screen_name=wcjc99
Twitter hat vor kurzem die Api umgestellt. Jetzt muss oauth benutzt werden. Meine App hab ich schon bei Twitter angemeldet, und ich hab verschiedene keys und token.

Ich rufe nun folgenden link mit http.get auf :
Code:
https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name=wcjc99
bekomme allerdings einen "Bad Authentication data" Fehler. Ich weiss nun nicht wie das mit der Authentication funktioniert. Wird der token und key einfach am link mit angehängt ?

Danke für eure Hilfe.

Dave

Daniel 20. Jul 2013 10:01

AW: Neue Twitter Api
 
So wie bisher wird es leider nicht mehr gehen.
Du musst Deinen Request signieren:
https://dev.twitter.com/docs/moving-basic-auth-oauth

DavidKlimas 20. Jul 2013 13:39

AW: Neue Twitter Api
 
Bis jetzt hab ich folgenden code zusammen, welcher mir allerdings einen fehler "Unauthorised" ausgibt :

Delphi-Quellcode:
uses [...], EncdDecd, IdHttp, IdSSLOpenSSL;

Const
  ConsumerKey: String = 'xvz1evFS4wEEPTGEFPHBog'; {Beispiel von Twitter}
  ConsumerSecret: String = 'L8qq9PZyRg6ieKGEKhZolGC0vJWLw8iEJ88DRdyOg'; {Beispiel von Twitter}

Function EncodeBase64(Input: String): String;
Var
  fstream, fStringStream: TStringStream;
Begin
  fstream := TStringStream.Create(Input);
  fStringStream := TStringStream.create('');
  EncodeStream(fstream, fStringStream);
  Result := fStringStream.DataString;
End;


procedure TForm1.Button1Click(Sender: TObject);
Var
  Credentials: String;
  MyHTTP: TIdHTTP;
  Result: TMemoryStream;
begin
  Credentials := EncodeBase64(ConsumerKey + ':' +  ConsumerSecret);
  MyHTTP := TIdHTTP.Create(nil);
  With MyHttp do
  Begin
    Request.Host := 'api.twitter.com/';
    Request.CustomHeaders.Add('Authorization: Basic ' + Credentials);
    Request.ContentType := 'application/x-www-form-urlencoded;charset=UTF-8';
    Request.CustomHeaders.Add('grant_type=client_credentials');
    IOHandler := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
    Result := TMemoryStream.Create;
    Post('https://api.twitter.com/oauth/request_token', Result);
    Memo1.Lines.LoadFromStream(Result);
    FreeAndNil(Result);
  End;
  MyHttp.Free;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:08 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz