6

php + curl で Twitter にログインしようとしていますが、応答としてこれを取得するため、要求に何か問題があると思います。

何かが技術的に間違っています。

お知らせいただきありがとうございます。問題を修正し、すぐに通常の状態に戻します。

私が使用しているphpコードは次のとおりです。

<?php
            $ch = curl_init($sTarget);
            curl_setopt($ch, CURLOPT_HEADER, false);
            curl_setopt($ch, CURLOPT_POST, true);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $sPost);
            curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
            curl_setopt($ch, CURLOPT_COOKIESESSION, true);
            curl_setopt($ch, CURLOPT_COOKIEJAR, $_CKS);
            curl_setopt($ch, CURLOPT_COOKIEFILE, $_CKS);
            curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
            curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-type: multipart/form-data"));
            curl_setopt($ch, CURLOPT_REFERER, "https://twitter.com");

?>

$sPost は次のようになります。

session[username_or_email]=user&session[password]=password&remember_me=1&scribe_log=&redirect_after_login=&authenticity_token=6e706165609354bd7a92a99cf94e09140ea86c6f

コードは最初にログイン フォーム フィールドをフェッチして、投稿変数が適切な値 (認証トークン) を持つようにします。私はすべてについて試してみました。はい、これにはAPIがあることは知っていますが、学習のために手動で行う方法を知りたいです。

前もって感謝します。

4

2 に答える 2

2

次の 2 つのことに気付きました。

1) POST データを URL エンコードしてみてください

例: session%5Busername_or_email%5D=user&session%5Bpassword%5D=password...

代わりに: session[username_or_email]=user&session[password]=password...

2) Twitter のログイン フォームには、authenticity_token という名前の隠しフィールドがあります。セッションにバインドされます。したがって、静的なauthenticity_tokenを使用することはできません。最初にログインフォームを読み、そこからauthenticity_tokenフィールドを使用する必要があります。

それが役立つことを願っています。

于 2013-05-08T14:48:34.780 に答える