Настольное приложение в C #: невозможно получить токен доступа из встроенного веб-браузера - PullRequest
1 голос
/ 27 августа 2011

Я создал настольное приложение WPF с C # и поместил System.Windows.Controls.WebBrowser.

, набрав его (где {0} - идентификатор / ключ моего приложения)

https://www.facebook.com/dialog/oauth?&client_id={0}&response_type=token&redirect_uri=https://www.facebook.com/connect/login_success.html&display=popup&scope=publish_stream,offline_access

вручнуюв мой firefox / т.е. / что угодно, и переход к рабочему процессу отправляет меня обратно к

https://www.facebook.com/connect/login_success.html#access_token=TOKEN

, что пока замечательно.

Но переход моего System.Windows.Controls.WebBrowser в рабочий процесс перенаправляет этот браузер на1014 *

https://www.facebook.com/connect/login_success.html

БЕЗ токена доступа.Что я делаю не так?

Ответы [ 2 ]

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

Я нашел обходной путь. Браузер WPF отключает хэш-часть URL, а браузер WinForms - нет.

Итак, посмотрите этот код за окном моего XAML, который я собираюсь использовать для получения разрешений на приложения Facebook у пользователя:

public partial class DiagnosticBrowserWindow : Window
{
    public DiagnosticBrowserWindow(string urlToRequest)
    {
        InitializeComponent();

        System.Windows.Forms.WebBrowser shadowBrowser = new System.Windows.Forms.WebBrowser();

        shadowBrowser.Navigated += (sender, e) =>
        {
            // the access token is now
            // here in e.Url
        };

        this.Browser.Navigated += (sender, e) =>
        {
            if (this.Browser.Source.AbsoluteUri.StartsWith("https://www.facebook.com/connect/login_success.html"))
            {
                shadowBrowser.Navigate(urlToRequest);
            }
        };

        this.Browser.Navigate(urlToRequest);
    }
}

Это работает, потому что, как только разрешения приложения были предоставлены (что мы обнаруживаем, обнаруживая перенаправление на login_success.html), мы отправляем теневой браузер (который является веб-браузером WinForms) на начальную страницу запроса, которая: 1006 *

https://www.facebook.com/dialog/oauth?&client_id={0}&response_type=token&redirect_uri=https://www.facebook.com/connect/login_success.html&display=popup&scope=publish_stream,offline_access

Facebook обнаружит, что разрешения уже предоставлены, и отправит shadowBrowser обратно на login_success.html, и на этот раз вы можете прочитать хэш-часть.

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

Я столкнулся с чем-то вроде этого при реализации модуля PowerShell Facebook . Возможно, вы сталкиваетесь с ошибкой в ​​WPF для http://facebooksdk.codeplex.com/discussions/261528. Мне пришлось вернуться к WinForms только для реализации возможности входа в систему. Это также исправило странный сбой при выходе, который я испытывал.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...