2

当我登录我的帐户时,我正在尝试解决 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(),然后重试。”

那么如何在登录失败(检索质询 url 所必需)后使用此功能而不会出现用户未登录异常

4

3 回答 3

3

这对我有用:

脚步:

  1. 有谷歌浏览器或安装谷歌浏览器,因为它是我所做的
  2. 转到 instagram.com,在您的地址栏中,它现在应该显示 www.instagram.com/challenge/ 或类似内容。
  3. 这是您将从该站点删除 cookie 以阻止它们一遍又一遍地重播相同的错误消息...即使您拥有正确的短信代码。转到第 4 步!
  4. 单击地址栏(屏幕左上角)中的绿色锁定按钮(网站安全验证),然后转到网站设置。
  5. 一旦点击设置选项中的后退按钮,不是实际的后退按钮将您带到上一个网页,而是小箭头按钮返回设置。
  6. 然后点击cookies选项
  7. 然后点击“查看所有cookies和站点数据”
  8. “搜索 cookie”应显示在右上角的搜索栏中
  9. 搜索 Instagram,你所有的 cookie 都会出现
  10. 删除所有 cookie 并返回 instagram.com
  11. 完成,应该让你有希望登录。
于 2018-09-18T01:19:27.050 回答
2

解决方案是设置 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());
}
于 2018-08-03T10:23:46.057 回答
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());
}
于 2019-09-11T06:51:11.880 回答