Получение «(400) неверного запроса» с помощью GetResponseStream () в C # - PullRequest
1 голос
/ 17 августа 2011

Я использую следующий код для отправки запроса на сервер facebook graph api oauth.

public string GetAccessToken(string code)
    {
        HttpWebRequest req = (HttpWebRequest) WebRequest.Create(@"https://graph.facebook.com/oauth/access_token?client_id=249725835046216&redirect_uri=http://localhost:2794/&client_secret=APP_SECRETa&code=" + code);
        HttpWebResponse res = (HttpWebResponse)req.GetResponse();
        string response=res.GetResponseStream().ToString();
        return response;
    }

Приведенный выше код вызывает следующее исключение:

The remote server returned an error: (400) Bad Request.

Между тем, если я наберу тот же URL-адрес в браузере, он будет работать.Помогите пожалуйста, где я не прав?

(PS В URL я обязательно заменяю APP_SECRET секретным ключом)

Ответы [ 5 ]

2 голосов
/ 17 августа 2011

Ваши параметры строки запроса должны быть UrlEncoded:

HttpWebRequest req = (HttpWebRequest) WebRequest.Create(@"https://graph.facebook.com/oauth/access_token?client_id=249725835046216&redirect_uri=" + UrlEncode("http://localhost:2794/") + "&client_secret=" + UrlEncode(APP_SECRET) + "&code=" + UrlEncode(code));
1 голос
/ 17 августа 2011

Вы должны закодировать параметры вашего URL.Вы можете использовать класс HttpUtility для кодирования ваших параметров.

0 голосов
/ 05 сентября 2017

Вот что случилось со мной и как это решить:

  1. Перенаправить пользователя на

    https://www.facebook.com/dialog/oauth?client_id=YOUR_APP_ID&redirect_uri=YOUR_URL

  2. Послепользователь нажимает кнопку «Разрешить», и он попадает в наш URI перенаправления

  3. . В этот момент мы получим код, и нам потребуется выполнить HTTP на стороне сервера. Получить следующий URL-адрес для обмена кодомс нашим токеном доступа oAuth:

    https://graph.facebook.com/oauth/access_token?client_id=YOUR_APP_ID&redirect_uri=YOUR_URL&client_secret=YOUR_APP_SECRET&code=THE_CODE_FROM_ABOVE

Теперь на шаге 3 я продолжал получать ответ Http 400.

Итак, после некоторых исследований яобнаружил, что на том redirect_uri, который мы представили на step 3, ничего не делается, кроме проверки запроса.Таким образом, значение должно соответствовать с шагом 2.

Вкратце:

redirect_uri ДОЛЖНЫ СООТВЕТСТВОВАТЬ обоим step 2 и step 3

0 голосов
/ 29 августа 2012

URL перенаправления должен совпадать с тем, который вы указали при получении кода.

Пожалуйста, ознакомьтесь с этой статьей, помогите мне!http://www.ronaldwidha.net/2011/03/24/facebook-oauth-access_token-return-http-400-error-validating-verification-code/

0 голосов
/ 17 августа 2011

Скорее всего, вам нужно указать пользовательский агент для удовлетворения некоторой логики проверки сервера:

HttpWebRequest req = (HttpWebRequest) WebRequest.Create(@"https://...&code=" + code);
req.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)";

попробуйте это и посмотрите, поможет ли это.

...