0

我正在开发我的 Instagram 桌面应用程序,但由于 403 Forbidden 错误,我无法授权用户。

我被困在从登录 POST 请求中获取响应。我的 POST 字符串如下所示:

csrfmiddlewaretoken=98d25eec9c3d1a6935e5a491ff2fa543&username=myname&password=mypassword

这就是我提出请求的方式:

        Uri url = new Uri
        ("https://instagram.com/accounts/login/?next=/oauth/authorize/?client_id=" +
        instagramClient_id + "&redirect_uri=" + instagramRedirectUrl +
        "&response_type=token");

        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
        request.CookieContainer = cc;
        request.Method = "POST";

        request.ContentType = "application/x-www-form-urlencoded";
        request.KeepAlive = true;

        byte[] sentData = Encoding.UTF8.GetBytes(data);
        request.ContentLength = sentData.Length;

        using (Stream requestStream = request.GetRequestStream())
        {
            requestStream.Write(sentData, 0, sentData.Length);
        }

        WebResponse response = request.GetResponse();

结果是 - 403 Forbidden。无法找出我做错了什么。

我不得不提到我已经测试了一些其他方法来完成授权,并注意到在使用 Instagram 时,Google Chrome 收到的 cookie 比 C# 请求多得多。到目前为止,我的桌面应用程序没有收到“sessionid”、“__qca”、“__utma”、“__utmb”、“__utmc”、“__utmz”、“ccode”和“user_segment”cookie。但它会收到“csrftoken”和“mid”cookie。也许这就是为什么我总是遇到 403 错误?

4

1 回答 1

3

添加Referer带有请求 URL 值的标头。

于 2015-06-19T11:15:02.070 回答