-1

私はfacebook c# sdkが初めてです。このリンクのチュートリアルに従いました。

ログイン後にユーザー名を表示するアプリケーションを作成しました。コードは次のとおりです。

public partial class MainWindow : Window
{
    private string appId = "appid";
    private string extenededPermissions = "offline_access,publish_stream";
    private Uri loginUrl = null;
    private string accessToken = null;
    private string userName = null;

    public MainWindow()
    {
        InitializeComponent();
    }

    /// <summary>
    /// Function to get the login url
    /// with the requested permissions
    /// </summary>
    private void GetLoginUrl()
    {
        dynamic parameters = new ExpandoObject();
        // add the client id
        parameters.client_id = appId;
        // add the redirect uri
        parameters.redirect_uri = "https://www.facebook.com/connect/login_success.html";
        // requested response
        parameters.response_type = "token";
        // type of display
        parameters.display = "popup";
        // If extended permissions are present
        if (!string.IsNullOrWhiteSpace(extenededPermissions))
            parameters.scope = extenededPermissions;
        // Create the login url
        Facebook fc = new FacebookClient();
        loginUrl = fc.GetLoginUrl(parameters);
    }

    private void WindowLoaded(object sender, RoutedEventArgs e)
    {
        // get the login url
        GetLoginUrl();
        // Navigate to that page
        webBrowser.Navigate(loginUrl);
    }

    private void webBrowser_Navigated(object sender, NavigationEventArgs e)
    {
        var fc = new FacebookClient();
        FacebookOAuthResult fr;
        // Check the returned url
        if (fc.TryParseOAuthCallbackUrl(e.Uri, out fr))
        {
            // check if authentication is success or not
            if (fr.IsSuccess)
            {
                getUserName(out userName);
            }
            else
            {
                var errorDes = fr.ErrorDescription;
                var errorReason = fr.ErrorReason;
            }
        }
        else
        {

        }
    }
    private void getUserName(out string name)
    {
        var fb = new FacebookClient(accessToken);
        // Get the user details
        dynamic result = fb.Get("me");
        // Get the user name
        name = result.name;
        MessageBox.Show("Hai " + name + ",Welcome to my App");
    }

}

私の問題はFacebookOAuthResult.

    private void webBrowser_Navigated(object sender, NavigationEventArgs e)
    {
        var fc = new FacebookClient();
        FacebookOAuthResult fr;
        // Check the returned url
        if (fc.TryParseOAuthCallbackUrl(e.Uri, out fr))
        {
            // check if authentication is success or not
            if (fr.IsSuccess)
            {
                getUserName(out userName);
            }
            else
            {
                var errorDes = fr.ErrorDescription;
                var errorReason = fr.ErrorReason;
            }
        }
        else
        {

        }
    }

ログインした後、にリダイレクトされredirect_uriます。しかし、fc.TryParseOAuthCallbackUrl(e.Uri, out fr)Web ブラウザは認証成功ページにリダイレクトされますが、失敗します。

そのため、アクセストークンを取得できませんでした。私のコードの問題は何ですか?

4

2 に答える 2