2016-05-12 12 views
0

Ich möchte Login mit Facebook in meinem Windows Phone App zu implementieren, wenn tippen Sie auf Login-Schaltfläche Popup von Facebook erscheinen, hier geben Sie meinen Benutzernamen und Passwort, alles gut, wenn ich will Token, führenAusnahme Web-Authentifizierung Ergebnis in Windows Phone Silverlight 8.1

WebAuthenticationResult myResult = await WebAuthenticationBroker.AuthenticateSilentlyAsync(startUri); 

ich diese Ausnahme erhalten:

COMException wurde nicht behandelt durch Benutzercode

Eine Ausnahme des Typs 'System.Runtime.InteropServices.COMException' ist in mscorlib.ni.dll aufgetreten, wurde aber nicht im Benutzercode verarbeitet

Weitere Informationen: Fehler HRESULT E_FAIL wurde von einem Aufruf an eine COM-Komponente zurückgegeben.

Jede Lösung, um dieses Problem zu lösen?

+0

Lassen Sie mich bitte Ihren vollständigen Code sehen. –

Antwort

1

Anstatt WebAuthenticationBroker.AuthenticateSilentlyAsync(startUri) verwenden Sie WebAuthenticationBroker.AuthenticateAndContinue(requestUri, callbackUri) Fügen Sie als Nächstes ein Application_ContractActivated-Ereignis in App.xaml hinzu. Sie können dies tun, indem App.xaml und das Hinzufügen von ContractActivated wie dieses

<shell:PhoneApplicationService ContractActivated="Application_ContractActivated" />

öffnen Diese Application_ContractActivated Methode in App.xaml.cs. sollte hinzufügen Bei dieser Methode können Sie das Ergebnis wie folgt erhalten:

public WebAuthenticationBrokerContinuationEventArgs WABContinuationArgs { get; set; } 

     private void Application_ContractActivated(object sender, IActivatedEventArgs e) 
       { 
        var _WABContinuationArgs = e as WebAuthenticationBrokerContinuationEventArgs; 

        if (_WABContinuationArgs != null) 
        { 
         WABContinuationArgs = _WABContinuationArgs; 
         var result = WABContinuationArgs.WebAuthenticationResult; 
        } 
       } 

Hinweis, dass diese Lösung für Windows Phone Silverlight 8.1 und nicht für Windows Phone 8.1 ist. Für Windows Phone 8.1 ist es das gleiche Prinzip, aber Sie verwenden OnActivated-Methode anstelle von Application_ContractActivated.