web-dev-qa-db-ja.com

InstagramプライベートAPIで必要な課題を解決する

アカウントにログインするときにInstagramから要求される課題を解決しようとしています。mgp25Instagram APIライブラリ(V 4.1.0安定版)を使用しています

課題を解決するために必要なリクエストを傍受できましたが、ライブラリに追加すると問題が発生します

メールまたは電話にコードをリクエストするためにこの関数を書きました

// Challenge url on this format /challenge/1463452997/1zS1L8kl62/
public function sendChallenge($challenge_url)
{
    return $this->request($challenge_url)
        ->addParam('choice', 1)
        ->addPost('device_id', $this->device_id)
        ->addPost('guid', $this->uuid)
        ->addPost('_csrftoken', $this->client->getToken())
        ->getResponse(new Response\UserInfoResponse());
}

私の問題は、どこに置いてもこの機能を要求するたびに、常に

「ユーザーはログインしていません。login()を呼び出してから、再試行してください。」

ログインに失敗した後(チャレンジURLを取得するために必要)に、ユーザーがログインしない例外を取得せずにこの関数を使用するにはどうすればよいですか

2
martin bayen

これは私のために働きました:

手順:

  1. Google chromeまたはgoogle chromeをインストールしてください。
  2. Instagram.comに移動すると、アドレスバーにwww.instagram.com/challenge/または同様のものが表示されます。
  3. これは、このサイトからCookieを削除して、同じSMSのコードを繰り返しても同じエラーメッセージが繰り返し表示されないようにするためです。ステップ4に進みます。
  4. アドレスバー(画面の左上)にある緑色のロックボタン(Webサイトのセキュリティ検証)をクリックして、サイトの設定に移動します。
  5. 設定オプションの[戻る]ボタンをクリックしたら、実際の[戻る]ボタンではなく、前のWebページに移動しますが、小さな矢印ボタンをクリックすると、設定に戻ります。
  6. 次にcookieオプションをクリックします
  7. 次に、「すべてのCookieとサイトデータを表示する」をクリックします。
  8. 「検索Cookie」は右上の検索バーに表示されます
  9. Instagramを検索すると、すべてのCookieが表示されます
  10. すべてのCookieを削除して、instagram.comに戻ります
  11. 終了しました。うまくいけばログインできます。
2
user10377772

解決策はsetNeedsAuth(false)を設定することでした

// Challenge url on this format /challenge/1463452997/1zS1L8kl62/
public function sendChallenge($challenge_url)
{
    return $this->request($challenge_url)
        ->setNeedsAuth(false)
        ->addParam('choice', 1)
        ->addPost('device_id', $this->device_id)
        ->addPost('guid', $this->uuid)
        ->addPost('_csrftoken', $this->client->getToken())
        ->getResponse(new Response\UserInfoResponse());
}
2
martin bayen

instagramにリクエストを送信する前に、送信者を選択する必要があります。コードに以下の行を追加して、ユーザーを選択できます。

// Challenge url on this format /challenge/1463452997/1zS1L8kl62/
public function sendChallenge($username, $password, $challenge_url)
{

    //this line require for select user that your login in before 
    $this -> changeUser ($username, $password);

    return $this->request($challenge_url)
        ->addParam('choice', 1)
        ->addPost('device_id', $this->device_id)
        ->addPost('guid', $this->uuid)
        ->addPost('_csrftoken', $this->client->getToken())
        ->getResponse(new Response\UserInfoResponse());
}
0
shahab