Diskuze: C# desktop aplikace a Facebook

C# .NET .NET (C# a Visual Basic) C# desktop aplikace a Facebook American English version English version

Avatar
jan.pichl
Člen
Avatar
jan.pichl:

Ahoj,
potřeboval bych radu. Snažím se vytvořit aplikaci která by odesílala fotku na zeď Facebookku. Problém je že se mě nedaří získat Access Token.

Na developers.fa­cebook.com jsem si založil aplikaci její ID předávám v ApplicationId. Nejspíš mám něco špatně nastaveno nebo se generuje špatně adresa. Dostávám totiž následující hlášení.

Tato adresa URL není povolena konfigurací aplikace: Jedna nebo více těchto adres > > >URL není v nastavení aplikace povolena. Musí se shodovat nastavením adresy URL >webu nebo URL základní stránky, nebo musí být doména subdoménou jedné z domén aplikace.

Nerozumím tomu co se ode mne chce nastavit a kde.

Funkce generující Log in:

private string GenerateLoginUrl()
      {
          var client = new FacebookClient();

          var fbLoginUri = client.GetLoginUrl(new
          {
              client_id = ApplicationId,
              redirect_uri ="https://m.facebook.com/dialog/oauth",
              response_type = "code",
              /* display = "popup",*/
              scope = "email,user_about_me,read_stream,publish_stream,user_photos, publish_checkins"
              /*,publish_stream"*/
          });

          return fbLoginUri.ToString();
      }

Přechod na stránku s vygenerovanou adresou:

loginWebBrowser.Navigate(loginUrl);

Funkce po přechodu na stránku TryParseOAuthCa­llbackUrl vrátí false:

private void webBrowser1_Navigated(object sender, NavigationEventArgs e)
{
    if (loginWebBrowser.Visibility == System.Windows.Visibility.Visible)
    {
        listBox1.Items.Add("navigated");

        var fb = new FacebookClient();

        FacebookOAuthResult oauthResult;


        if (fb.TryParseOAuthCallbackUrl(e.Uri, out oauthResult))
        {
            listBox1.Items.Add("uri");
            if (oauthResult.IsSuccess)
            {
                listBox1.Items.Add("ok");
                _accessToken = oauthResult.AccessToken;
                _authorized = true;
            }
            else
            {
                listBox1.Items.Add("false");
                _accessToken = "";
                _authorized = false;
            }

            if (_authorized)
            {
                listBox1.Items.Add("_authorized");
                fb = new FacebookClient(_accessToken);

                dynamic result = fb.Get("me");
                _currentName = result.name;
                _currentEmail = result.email;
                userNameLabel.Content = string.Format("Facebook User: {0}", _currentName);

                //Do what need being done now that we are logged in!
            }
            else
            {
                MessageBox.Show("Couldn't log into Facebook!", "Login unsuccessful", MessageBoxButton.OK, MessageBoxImage.Error);

            }
        }
    }
}

Předem děkuji za případnou radu.

 
Odpovědět 6.10.2015 18:28
Avatar
Odpovídá na jan.pichl
Vojtěch Pospíchal:

Tohle vypadá na problém přímo v nastavení aplikace na fb. Někde tam totiž bude nastavení toho, z jaké domény (respektive ip adresy) se tam dá přistupovat. Vzhledem k tomu, že přistupuješ z desktopu, budeš muset najít způsob, jak povolit všechny ip adresy, nebo si udělat API na serveru.

Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
 
Nahoru Odpovědět 6.10.2015 19:27
Avatar
jan.pichl
Člen
Avatar
Odpovídá na Vojtěch Pospíchal
jan.pichl:

Špatně jsem měl redirect_uri

var fbLoginUri = client.GetLoginUrl(new
           {
               client_id = AppID,
               redirect_uri = @"https://www.facebook.com/connect/login_success.html",
               response_type = "token",
               display = "popup",
               scope = "user_friends"
           });
 
Nahoru Odpovědět 8.10.2015 18:54
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.