Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function PobierzTokenTwitch(login, haslo: string): string;
- function ExtractData(sBegin, sEnd, sData: string): string;
- var
- iStartPos, iEndPos: integer;
- begin
- Result := '';
- iStartPos := Pos(sBegin, sData) + Length(sBegin);
- iEndPos := PosEx(sEnd, sData, iStartPos);
- if (iStartPos > Length(sBegin)) and (iEndPos > iStartPos) then Result := Copy(sData, iStartPos, iEndPos - iStartPos);
- end;
- const
- // wpisz swoje dane ze strony
- CLIENT_ID = 'co04pfrt255u3a8yxud4to7122jr9ps';
- CLIENT_SECRET = '4u1xhp0orvdowk5efwyecmrlal9w0l7';
- REDIRECT_URI = 'http://mca64.com/twitch.php';
- var
- IdHTTP: TIdHTTP;
- IdSSL: TIdSSLIOHandlerSocketOpenSSL;
- HTML: string;
- nonce: string;
- parametry: TStringList;
- strumien: TStringStream;
- authenticity_token: string;
- RedirectURL, Code: string;
- begin
- IdHTTP := TIdHTTP.Create;
- parametry := TStringList.Create;
- strumien := TStringStream.Create;
- try
- IdSSL := TIdSSLIOHandlerSocketOpenSSL.Create(IdHTTP);
- IdHTTP.IOHandler := IdSSL;
- IdHTTP.AllowCookies := True;
- IdHTTP.CookieManager := Form1.IdCookieManager1;
- Form1.IdCookieManager1.CookieCollection.Clear;
- IdHTTP.HandleRedirects := True;
- HTML := IdHTTP.Get
- (Format('https://api.twitch.tv/kraken/oauth2/authorize?response_type=code&client_id=%0:s&redirect_uri=%1:s&scope=chat_login+channel_editor+channel_read',
- [CLIENT_ID, REDIRECT_URI]));
- nonce := ExtractData('name="nonce" value="', '"', HTML);
- parametry.Add('scope=chat_login channel_editor channel_read');
- parametry.Add('client_id=' + CLIENT_ID);
- parametry.Add('redirect_uri=' + REDIRECT_URI);
- parametry.Add('response_type=code');
- parametry.Add('state=');
- parametry.Add('nonce=' + nonce);
- parametry.Add('from_embed=false');
- parametry.Add('time_to_submit=');
- parametry.Add('username=' + login);
- parametry.Add('password=' + haslo);
- IdHTTP.Post('https://passport.twitch.tv/authentications/new', parametry, strumien, IndyTextEncoding_UTF8());
- HTML := strumien.DataString;
- RedirectURL := ExtractData('redirect":"', '"', HTML);
- RedirectURL := StringReplace(RedirectURL, '\u0026', '&', [rfReplaceAll]);
- Code := ExtractData('code=', '&', RedirectURL);
- try
- HTML := IdHTTP.Get(RedirectURL, [302, 404]); // IGNORUJEMY BLEDY
- except
- end;
- authenticity_token := ExtractData('name="authenticity_token" type="hidden" value="', '"', HTML);
- if Length(authenticity_token) > 0 then // potrzebna autioryzacja aplikacji
- begin
- parametry.Clear;
- parametry.Add('utf8=✓');
- parametry.Add('client_id=' + CLIENT_ID);
- parametry.Add('authenticity_token=' + authenticity_token);
- parametry.Add('scope=chat_login channel_editor channel_read');
- parametry.Add('response_type=code');
- parametry.Add('redirect_uri=' + REDIRECT_URI);
- parametry.Add('state=');
- try // 10061 connection refused
- IdHTTP.Post('https://api.twitch.tv/kraken/oauth2/allow', parametry, strumien, IndyTextEncoding_UTF8());
- except
- end;
- HTML := strumien.DataString;
- end;
- Code := ExtractData('code=', '&', IdHTTP.Request.URL); // zgodnie z api z adresu strony trzeba odczytac codde
- parametry.Clear;
- parametry.Add('client_id=' + CLIENT_ID);
- parametry.Add('client_secret=' + CLIENT_SECRET);
- parametry.Add('grant_type=authorization_code');
- parametry.Add('redirect_uri=' + REDIRECT_URI);
- parametry.Add('code=' + Code);
- parametry.Add('state=');
- IdHTTP.Post('https://api.twitch.tv/kraken/oauth2/token', parametry, strumien, IndyTextEncoding_UTF8());
- HTML := strumien.DataString;
- parametry.Clear;
- Result := 'oauth:' + ExtractData('"access_token":"', '"', HTML);
- finally
- IdHTTP.Free;
- parametry.Free;
- strumien.Free;
- end;
- end;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement