(400) Неправильный запрос при вызове Facebook C # SDK - PullRequest
1 голос
/ 27 февраля 2011

Я пытаюсь использовать Facebook C # SDK в моем существующем веб-приложении ASP.NET.Мое намерение состоит в том, чтобы позволить пользователям обойти проверку подлинности форм, нажав на ссылку Facebook.URL-адрес этой ссылки следующий:

 <a href="https://www.facebook.com/dialog/oauth?client_id=0000000000000&redirect_uri=http://localhost:2708/fboauth.aspx&scope=offline_access">facebook</a>

Facebook обрабатывает запрос, а затем перенаправляет обратно на fboauth.aspx, за которым следует следующий код ...

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Facebook;
using System.Net;
using System.IO;

namespace StorageByMail20
{
    public partial class fboauth : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            string code;
            code = Request.QueryString["code"];
            Label1.Text = code;


        string token;

        string url = "https://graph.facebook.com/oauth/access_token?client_id=000000000000000&redirect_uri=http://localhost:2708/fboauth.aspx&client_secret=000000000000000000000000&code=" + code;

        WebRequest request = WebRequest.Create(url);
        WebResponse response = request.GetResponse();
        StreamReader reader = new StreamReader(response.GetResponseStream());
        token = reader.ReadToEnd();
        string decodedtoken = HttpUtility.UrlDecode(token);


        Facebook.FacebookAPI api = new Facebook.FacebookAPI(decodedtoken);

        JSONObject result = api.Get("/first_name");

        string name = result.Dictionary["first_name"].String;


        Label2.Text = token;


        Label3.Text = name;

    }
}

}

На этой странице я пытаюсь сделать следующее:

  1. Разобрать код авторизации из ответа Facebook
  2. Используйте код авторизации для получениятокен аутентификации из Facebook
  3. Выполните вызов JSON, используя код аутентификации для получения информации о пользователе (имя, адрес электронной почты и т. д.)Я сделаю что-то более интересное с данными. Пока я просто пытаюсь заставить API-взаимодействия работать правильно).

Все работает, как и предполагалось, до вызова JSON.Если я закомментирую эту строку, я в порядке.В противном случае Facebook возвращает ошибку (400) Bad Request.Может кто-нибудь определить, где я ошибся?

Примечание: здесь сообщается об известной ошибке https://github.com/facebook/csharp-sdk/issues, которая связана с проблемами кодирования с токеном доступа.Я думаю Я обратился к этому с моим использованием UrlDecode.Кроме того, обратите внимание, что SDK, который я собираюсь использовать, является официальным (в настоящее время в Альфа-версии) от Facebook.Сообщество создало несколько других C # SDK.

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

onishimura.com / 2010/08/11 / facebook-c-and-asp-net-mvc-code-samples-for-friends-list-активность-list-and-wall-posts /

multitiered.wordpress.com / 2010/08/05 / получение-started-with-the-facebook-c-sharp-sdk /

* Я удалил "http://" из ссылок выше. Очевидно, мне нужно больше очков репутации, прежде чем SO позволит мне включить более двух ссылокИзвините, ребята!

1 Ответ

2 голосов
/ 28 февраля 2011

SDK, на который вы ссылаетесь на Github, не является Facebook C # SDK, это очень старый и очень ошибочный коммит, который Facebook отправил, а затем оставил в покое. Существует гораздо более современный и широко используемый проект под названием Facebook C # SDK здесь .

Похоже, что вы выполняете много работы, которую можно легко выполнить с помощью регистрационного плагина или javascript sdk (что является соглашением при разработке Facebook Connect сайты.

Если вы делаете еще какие-либо вызовы Facebook на стороне сервера, я настоятельно рекомендую вам использовать связанный C # SDK. Взгляните на пример, чтобы увидеть, как мало кода вам нужно сделать.

...