Xamarin.Auth:使用 Facebook oauth,如何重定向到我的应用程序?
Posted
技术标签:
【中文标题】Xamarin.Auth:使用 Facebook oauth,如何重定向到我的应用程序?【英文标题】:Xamarin.Auth: Using Facebook oauth, how to redirect to my app? 【发布时间】:2016-04-30 13:11:29 【问题描述】:我刚开始使用 Xamarin.Auth,我想通过 oauth 启用 Facebook 登录。
这是我的配置:
public static string ClientId = "client id";
public static string ClientSecret = "client secret";
public static string Scope = "email";
public static string AuthorizeUrl = "https://m.facebook.com/dialog/oauth";
public static string RedirectUrl = "https://www.facebook.com/connect/login_success.html";
public static string AccessTokenUrl = "https://m.facebook.com/dialog/oauth/token";
启动验证的代码:
public class AuthenticationPageRenderer : PageRenderer
public override void ViewDidAppear(bool animated)
base.ViewDidAppear (animated);
var auth = new OAuth2Authenticator (
Constants.ClientId,
Constants.ClientSecret,
Constants.Scope,
new Uri (Constants.AuthorizeUrl),
new Uri (Constants.RedirectUrl),
new Uri (Constants.AccessTokenUrl)
);
auth.Completed += OnAuthenticationCompleted;
PresentViewController (auth.GetUI (), true, null);
async void OnAuthenticationCompleted (object sender, AuthenticatorCompletedEventArgs e)
Debug.WriteLine ("AUTH Completed!");
if (e.IsAuthenticated)
似乎工作正常,但我不想将用户重定向到https://www.facebook.com/connect/login_success.html,而是想再次将他重定向回我的应用程序。非常感谢任何帮助!
最好, 萨沙
【问题讨论】:
你为什么提供facebook.com/connect/login_success.html 作为redirectionURL。 redirectionURL 应该是您的应用程序网址。 【参考方案1】:您可以再次“重定向回”到您的应用,只需调用您自己的方法来显示您希望向用户显示的应用页面。
async void OnAuthenticationCompleted (object sender, AuthenticatorCompletedEventArgs e)
Debug.WriteLine ("AUTH Completed!");
if (e.IsAuthenticated)
//invoke the method that display the app's page
//that you want to present to user
App.SuccessfulLoginAction.Invoke();
在您的 App.cs 中
public static Action SuccessfulLoginAction
get
return new Action(() =>
//show your app page
var masterDetailPage = Application.Current.MainPage as MasterDetailPage;
masterDetailPage.Detail = new NavigationPage((Page)Activator.CreateInstance(typeof(MainPage)));
masterDetailPage.IsPresented = false;
);
假设 MainPage 是您成功登录后要显示的页面。我在我的示例中使用 Xamarin.Forms 和 MasterDetailPage 来显示可能与您的应用不同但概念相同的页面。
【讨论】:
【参考方案2】:只需在您的 OnAuthenticationCompleted
方法中调用 DismissViewController (true, null)
。或者使用异步等效项:
async void OnAuthenticationCompleted(object sender, AuthenticatorCompletedEventArgs e)
Debug.WriteLine("AUTH Completed!");
await DismissViewControllerAsync(true);
if (e.IsAuthenticated)
【讨论】:
以上是关于Xamarin.Auth:使用 Facebook oauth,如何重定向到我的应用程序?的主要内容,如果未能解决你的问题,请参考以下文章
Xamarin.Auth:使用身份提供者对用户进行身份验证 [xamarin forms - Android]
Xamarin.Auth 或 IdentityModel + IdentityServer4
Xamarin.Auth OAuth Google API,用于Android的用户身份验证