2017-04-06 7 views
0

誰でもこの問題を解決できますか?OAuth2とUWP Xamarin.Forms

UAPでOAuth2を使用する方法がわかりません。認証のAndriodコードに例えば

は、次のようになります

[assembly: ExportRenderer(typeof(LoginPage), typeof(LoginPageRenderer))] 

namespace TestTask.Droid 
{ 
    class LoginPageRenderer : PageRenderer 
    { 
     private static bool _isShown; 
     protected override void OnElementChanged(ElementChangedEventArgs<Page> e) 
     { 
      base.OnElementChanged(e); 

      if (_isShown) return; 
      _isShown = true; 

      var activity = this.Context as Activity; 

      var auth = new OAuth2Authenticator(
       clientId: "someId", 
       scope: "", 
       authorizeUrl: new Uri("https://oauth.vk.com/authorize"), 
       redirectUrl: new Uri("https://oauth.vk.com/blank.html")); 

      auth.Completed += (sender, eventArgs) => { 
       if (eventArgs.IsAuthenticated) 
       { 
        AuthInfo.Token = eventArgs.Account.Properties["access_token"].ToString(); 
        AuthInfo.UserID = eventArgs.Account.Properties["user_id"].ToString(); 
       } 
       else 
       { 
        // The user cancelled 
       } 
      }; 

      activity?.StartActivity((Intent)auth.GetUI(activity)); 
     } 
    } 
} 

ので、Androidの溶液は、この方法では

protected override void OnElementChanged(ElementChangedEventArgs<Page> e) 

とコード

activity?.StartActivity((Intent)auth.GetUI(activity)); 
FOこの行であります

質問:私はUWPで同じことをやり遂げることができますか、それをUWPでどのように動作させることができますか?

答えて

0

ありがとうございます!私はUWPプラットフォームのための私の目的のための解決策を見つけました。

[assembly: ExportRenderer(typeof(LoginPage), typeof(LoginPageRenderer))] 

namespace TestTask.UWP 
{ 
    public class LoginPageRenderer : PageRenderer 
    { 
     private Windows.UI.Xaml.Controls.Frame _frame; 
     private bool _isShown; 

     protected override void OnElementChanged(ElementChangedEventArgs<Xamarin.Forms.Page> e) 
     { 
      base.OnElementChanged(e); 

      if (_isShown) return; 
      _isShown = true; 

      if (Control == null) 
      { 
       WindowsPage windowsPage = new WindowsPage(); 

       var auth = new OAuth2Authenticator(
        clientId: "someID", 
        scope: "", 
        authorizeUrl: new Uri("https://oauth.vk.com/authorize"), 
        redirectUrl: new Uri("https://oauth.vk.com/blank.html")); 

       _frame = windowsPage.Frame; 
       if (_frame == null) 
       { 
        _frame = new Frame(); 
        //_frame.Language = global::Windows.Globalization.ApplicationLanguages.Languages[0]; 

        windowsPage.Content = _frame; 
        SetNativeControl(windowsPage); 
       } 

       auth.Completed += (sender, eventArgs) => { 

        if (eventArgs.IsAuthenticated) 
        { 
         AuthInfo.Token = eventArgs.Account.Properties["access_token"].ToString(); 
         AuthInfo.UserID = eventArgs.Account.Properties["user_id"].ToString(); 
        } 
        else 
        { 
         // The user cancelled 
        } 
       }; 

       Type pageType = auth.GetUI(); 
       _frame.Navigate(pageType, auth); 
       Window.Current.Activate(); 
      } 
     } 
    } 
} 

解決してください。

0

私の質問は、私がUWPで同じことをする方法、またはUWPでそれを動作させる方法です。

私はXamarin.AuthがUWPをサポートしているかどうかわからないんだけど、UWPのために、私たちはOAuthのた​​めWeb authentication brokerを使用することができ、あなたは公式WebAuthenticationBroker sampleを確認することができ、それはxamarinではないのですが、あなたはネイティブUWPプロジェクトと使用中のそれをコーディングすることができますXamarinで同じことを行うカスタムレンダラ。

0

Xamarin.Authは、Standard/TraditionalのUWPをかなり長くサポートしています。 Xamarin.Formsのサポートが最近追加され、完全にテストされていません(1.5.0-alpha)

関連する問題