Pertanyaan Login Facebook - Windows 10 UWP - Desktop


Saya sedang membangun Aplikasi Universal Windows 10 UWP yang baru, dan mencoba melakukan login Facebook.

Di Facebook, saya telah mengatur bagian Aplikasi Windows dari aplikasi saya untuk memiliki pengenal aplikasi saya:

Windows: s-1-15-xxxxxxxxxxxx
  Windows Phone: fef49b712e5a843cbfeb0c9d780423fc (Bukan yang sebenarnya)

Di file manifes paket, saya telah menambahkan protokol:

msft-fef49b712e5a843cbfeb0c9d780423fc

Yang berarti saya mengatur saya redirect_uri parameter ke:

msft-fef49b712e5a843cbfeb0c9d780423fc: // mengotorisasi

Ketika menjalankan telepon (dengan Windows 10 Mobile Preview), layanan ini berfungsi dengan baik, membuka aplikasi Facebook di telepon (menggunakan fbconnect: // authorize? .....), yang pada gilirannya mengotentikasi, dan kemudian membuka saya aplikasi kembali - sempurna !!

Namun, ketika mencoba hal yang sama di desktop, itu tidak berfungsi. Di dalam saya Launcher.LaunchUriAsync() diatur untuk memiliki Uri fallback dari dialog web Facebook standar (https: //www.facebook.com/dialog/oauth? .....) - Ini karena tidak ada aplikasi Facebook untuk Windows 10 yang mendukung login.

Mengirim yang sama redirect_uri melalui Facebook, membuka browser web (Edge) dan meminta izin, dll. setelah izin diberikan, tidak ada yang terjadi. Sepertinya penanganan protokol tidak berfungsi.

Pikiran apa pun akan berguna.


5
2017-10-13 08:52


asal


Jawaban:


Di desktop, coba gunakan WebAuthenticationBroker dari pada Launcher.LaunchUriAsync seperti yang dijelaskan dalam contoh ini: http://dotnetbyexample.blogspot.de/2015/06/custom-oauth-login-to-facebook-for.html

private async Task<string> AuthenticateFacebookAsync()
{
  try
  {
    var fb = new FacebookClient();

    var redirectUri = 
      WebAuthenticationBroker.GetCurrentApplicationCallbackUri().ToString();

    var loginUri = fb.GetLoginUrl(new
                                   {
                                     client_id = AppId,
                                     redirect_uri = redirectUri,
                                     scope = ExtendedPermissions,
                                     display = "popup",
                                     response_type = "token"
                                   });

    var callbackUri = new Uri(redirectUri, UriKind.Absolute);

    var authenticationResult =
      await
        WebAuthenticationBroker.AuthenticateAsync(
        WebAuthenticationOptions.None, 
        loginUri, callbackUri);

    return ParseAuthenticationResult(fb, authenticationResult);
  }
  catch (Exception ex)
  {
    return ex.Message;
  }
}

6
2017-10-13 08:56



Menggunakan WebAuthenticationBroker.GetCurrentApplicationCallbackUri().AbsoluteUri untuk redirect_uri.

Dan perbarui uri yang sama di konsol pengembang facebook.

https://developers.facebook.com/apps//settings/

Konsol pengembang Facebook


2
2018-02-17 11:22