解决Instagram Private API中所需的挑战

时间:2018-08-02 10:36:28

标签: php instagramapi-mgp25

我正在尝试解决登录帐户时Instagram所面临的挑战,我正在使用mgp25 Instagram 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(),然后重试。”

所以登录失败(检索挑战网址所必需)后如何使用此功能而又不会导致用户未登录异常

3 个答案:

答案 0 :(得分:1)

解决方案是设置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());
}

答案 1 :(得分:1)

这对我有用:

步骤:

  1. 安装了谷歌浏览器或安装谷歌浏览器会导致我执行此操作
  2. 转到instagram.com,然后在您的地址栏中显示www.instagram.com/challenge/或类似的内容。
  3. 这是您要从此站点删除cookie的原因,以阻止它们一遍又一遍地重放相同的错误消息...即使您具有正确的短信代码。转到第4步!
  4. 单击地址栏中(屏幕左上方)的绿色锁定按钮(网站安全验证),然后转到网站设置。
  5. 在设置选项中单击后退按钮后,不是实际的后退按钮,而是带小箭头的按钮返回设置。
  6. 然后单击cookie选项
  7. 然后单击“查看所有cookie和站点数据”
  8. “搜索cookie”应显示在右上角的搜索栏中
  9. 搜索Instagram,然后显示所有Cookie
  10. 删除所有cookie并返回instagram.com
  11. 已完成,应该可以登录了。

答案 2 :(得分:0)

在向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());
}