2016-04-18 6 views
0

Ich habe das folgende Problem beim Herstellen einer Verbindung zu Twitter mithilfe der OAuth-PIN-Autorisierungsmethode.C# LinqToTwitter-Verbindung OAuth-PIN

Der Code:

private async void button1_Click(object sender, RoutedEventArgs e) 
    { 
     pinAuth = new PinAuthorizer 
     { 

      CredentialStore = new InMemoryCredentialStore 
      { 

       ConsumerKey = resourceLoader.GetString("ConsumerKey"), 
       ConsumerSecret = resourceLoader.GetString("ConsumerSecret") 
      }, 

      GoToTwitterAuthorization = async pageLink => 
       await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, 
       () =>{ OAuthWebBrowser.Navigate(new Uri(pageLink, UriKind.Absolute)); }) 

     }; 
     await pinAuth.BeginAuthorizeAsync(); 

Nach der PIN-Abrufen würde ich so etwas tun:

private async void button2_Click(object sender, RoutedEventArgs e) 
    { 
     string pin = null; // Cant get the PIN 
     await pinAuth.CompleteAuthorizeAsync(pin); 

     var credentials = pinAuth.CredentialStore; 
     string oauthToken = credentials.OAuthToken; 
     string oauthTokenSecret = credentials.OAuthTokenSecret; 
     string screenName = credentials.ScreenName; 
     ulong userID = credentials.UserID; 
    } 

Der Browser öffnet ich meine Zugangsdaten in die Form zu bringen, und klicken Sie autorisieren. Nach diesem Klick erscheint die PIN für eine halbe Sekunde und dann erscheint folgende Fehlermeldung: "Diese Seite benötigt einige Informationen, die nicht zur Verfügung gestellt wurden. Bitte kehren Sie zu der Seite zurück, die Sie auf diese Seite geschickt hat und versuchen Sie es erneut ... es war wahrscheinlich ein ehrlicher Fehler "

Das gleiche Problem in diesem Thread ohne Lösung bisher.

Vielen Dank!

// UPDATE

enter image description here

+0

http://stackoverflow.com/questions/16667361/linq-to-twitter-status-update Diese Antwort hat den LinqToTwitter-Code, um dies zu erreichen. Der erste Teil ist für die alte Version, wenn die Bibliothek, aber darunter ist ein Update, wie es für die neue Version zu tun ist. – AndyJ

Antwort

0

ohne Antwort in Kürze 3 Tage erlaube ich mir Ihnen ein alternatives Beispiel mit Tweetinvi zu geben (was ich bin der Entwickler). Ich verstehe, dass Sie versuchen, LinqToTwitter zu verwenden, und ich kenne die Bibliothek nicht genug, um Ihnen bei diesem speziellen Problem zu helfen.

Weitere Informationen zur Authentifizierung finden Sie in der zugehörigen wiki section.

// Create a new set of credentials for the application. 
var appCredentials = new TwitterCredentials("CONSUMER_KEY", "CONSUMER_SECRET"); 

// Init the authentication process and store the related `AuthenticationContext`. 
var authenticationContext = AuthFlow.InitAuthentication(appCredentials); 

// Go to the URL so that Twitter authenticates the user and gives him a PIN code. 
Process.Start(authenticationContext.AuthorizationURL); 

// Ask the user to enter the pin code given by Twitter 
var pinCode = Console.ReadLine(); 

// With this pin code it is now possible to get the credentials back from Twitter 
var userCredentials = AuthFlow.CreateCredentialsFromVerifierCode(pinCode, authenticationContext); 

// Use the user credentials in your application 
Auth.SetCredentials(userCredentials); 

Ich hoffe, dass dies für Sie hilfreich sein könnte.

+0

Nur um klar zu sein, bevor du deine Idee ausprobierst ... Ist es möglich, den Twitter-Konnektor über Twetinvi zu bekommen und ihn dann mit LinqToTwitter zu benutzen, oder ist das eine wirklich dumme Frage :-)? Ich entwickle diese Anwendung ziemlich weit und ich müsste alle Twitter-Funktionen wiederholen ... – Ulpin

+0

Ja, es wird möglich sein. Die von Tweetinvi kommenden 'userCredentials' enthalten alle Informationen, die Sie zur Authentifizierung mit LinqToTwitter benötigen. – Linvi

+0

'ITwitterCredentials' enthalten' access_token', 'access_token_secret',' consumer_key' und schließlich 'consumer_secret', die alle Informationen sind, die Sie zur Authentifizierung benötigen. – Linvi