Проблемы с использованием захваченного токена доступа для получения информации Facebook пользователя - PullRequest
0 голосов
/ 17 октября 2011

Я пытался закодировать приложение формы Windows, которое взаимодействует с Facebook, чтобы получить токен доступа, у которого есть разрешения на получение части информации пользователя.Я пытался получить свой день рождения, используя следующий код, но он продолжает выдавать мне ошибку 400 неверных запросов.В основном, после запуска этого кода и входа в систему при аутентификации предполагается отображать окно сообщения, содержащее день рождения пользователя.В этом случае я использую свой собственный идентификатор пользователя в методе api.GET.Кажется, это проблема с токеном доступа, так как, когда я не передаю токены, я могу просмотреть общедоступную информацию, такую ​​как идентификатор, используя тот же код, но я распечатываю токен доступа, чтобы проверить, и, похоже, все в порядке.Любая помощь приветствуется.Первое размещение здесь

public partial class AccessTokenRetrieval : Form
{
    private string accessToken=null;


    public AccessTokenRetrieval()
    {
        InitializeComponent();
    }

    private void accessTokenButton_Click(object sender, EventArgs e)
    {
        string getAccessTokenURL = @"https://graph.facebook.com/oauth/authorize?client_id=223055627757352&redirect_uri=http://www.facebook.com/connect/login_success.html&type=user_agent&display=popup&grant_type=client_credentials&scope=user_photos,offline_access";
        getAccessTokenWebBrowser.Navigate(getAccessTokenURL);
    }

    private void getAccessTokenWebBrowser_Navigated(object sender, WebBrowserNavigatedEventArgs e)
    {

        string successUrl = @"http://www.facebook.com/connect/login_success.html";

        string urlContainingUserAuthKey = e.Url.ToString();
        MessageBox.Show(urlContainingUserAuthKey);

        int searchInt = urlContainingUserAuthKey.IndexOf(successUrl);
        MessageBox.Show(searchInt.ToString());

        if (urlContainingUserAuthKey.IndexOf(successUrl) == -1)
        {
            string accessTokenString;
            accessTokenString = Regex.Match(urlContainingUserAuthKey, "access_token=.*&").ToString();
            this.accessToken = accessTokenString.Substring(13, accessTokenString.Length - 14);
            //100001067570373
            //MessageBox.Show(accessToken);
            accessTokenTextBox.Text = this.accessToken;
            Facebook.FacebookAPI api = new Facebook.FacebookAPI(this.accessToken);
            JSONObject me = api.Get("/100001067570373");
            MessageBox.Show(me.Dictionary["user_birthday"].String);
        }
    }
#

1 Ответ

1 голос
/ 17 октября 2011

Я бы попросил вас попробовать http://facebooksdk.codeplex.com и проверить папку с примерами.Он включает в себя пример для аутентификации WinForms, а также делает различные запросы к Facebook.

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

http://blog.prabir.me/post/Facebook-CSharp-SDK-Writing-your-first-Facebook-Application.aspx

http://blog.prabir.me/post/Facebook-CSharp-SDK-Making-Requests.aspx

...