使用 Xamarin.Auth 通过 Facebook 进行身份验证
Authentication with Facebook by using Xamarin.Auth
我正在使用 Xamarin.Auth 在我的应用程序中使用 facebook 登录 (android/iOS),一切进展顺利,但成功登录后,facebook 个人资料正在打开并且不会返回到我的应用程序。我想在不显示 facebook 个人资料的情况下重定向到我的应用程序主页。我正在关注此 tutorial,但没有取得任何成功。我想我没有提供我的应用程序的正确网址。请给我建议。
在此先感谢您的帮助。
这是我的 loginPageRenderer 代码:
[assembly: ExportRenderer (typeof (FBLoginPage), typeof (LoginPageRendrerr))]
namespace FFirst_app.Droid
{
public class LoginPageRendrerr : PageRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Page> e)
{
base.OnElementChanged(e);
// this is a ViewGroup - so should be able to load an AXML file and FindView<>
var activity = this.Context as Activity;
var auth = new OAuth2Authenticator (
clientId: "7b745e26dbb64e1a3a3bf6bfd33165bc", // your OAuth2 client id
scope: "basic", // the scopes for the particular API you're accessing, delimited by "+" symbols
authorizeUrl: new Uri("https://apps.facebook.com/myappppppp"),//("https://api.instagram.com/oauth/authorize/"), // the auth URL for the service
redirectUrl: new Uri ("http://www.facebook.com/connect/login_success.html")); // the redirect URL for the service
auth.Completed += (sender, eventArgs) => {
if (eventArgs.IsAuthenticated)
{
App.SuccessfulLoginAction.Invoke();
// Use eventArgs.Account to do wonderful things
App.SaveToken(eventArgs.Account.Properties["access_token"]);
string sessionToken = App.Token; // /* Authenticate the user with Facebook and fetch a session token */;
DateTime expiration = DateTime.Today; ///* The expiration time for the session token */;
string facebookId = Constants.FBAppId;
ParseFacebookUtils.LogInAsync (facebookId, sessionToken, expiration);
} else {
// The user cancelled
}
};
activity.StartActivity (auth.GetUI(activity));
}
}
}
在 Xamarin.Auth Getting Started 页面上,提到您可以关闭 iOS 上的 UI:
auth.Completed += (sender, eventArgs) => {
// We presented the UI, so it's up to us to dimiss it on iOS.
**> DismissViewController (true, null); <**
if (eventArgs.IsAuthenticated) {
// Use eventArgs.Account to do wonderful things
} else {
// The user cancelled
}
};
我找到了 URL 错误的答案,现在当我将 'authorizeUrl:' 更改为“http://www.facebook.com/connect/login_success.html” 并且这个 URl 之后它开始工作了在 FB App 上设置 is.So 现在我的代码可以正常工作了。
我正在使用 Xamarin.Auth 在我的应用程序中使用 facebook 登录 (android/iOS),一切进展顺利,但成功登录后,facebook 个人资料正在打开并且不会返回到我的应用程序。我想在不显示 facebook 个人资料的情况下重定向到我的应用程序主页。我正在关注此 tutorial,但没有取得任何成功。我想我没有提供我的应用程序的正确网址。请给我建议。 在此先感谢您的帮助。
这是我的 loginPageRenderer 代码:
[assembly: ExportRenderer (typeof (FBLoginPage), typeof (LoginPageRendrerr))]
namespace FFirst_app.Droid
{
public class LoginPageRendrerr : PageRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Page> e)
{
base.OnElementChanged(e);
// this is a ViewGroup - so should be able to load an AXML file and FindView<>
var activity = this.Context as Activity;
var auth = new OAuth2Authenticator (
clientId: "7b745e26dbb64e1a3a3bf6bfd33165bc", // your OAuth2 client id
scope: "basic", // the scopes for the particular API you're accessing, delimited by "+" symbols
authorizeUrl: new Uri("https://apps.facebook.com/myappppppp"),//("https://api.instagram.com/oauth/authorize/"), // the auth URL for the service
redirectUrl: new Uri ("http://www.facebook.com/connect/login_success.html")); // the redirect URL for the service
auth.Completed += (sender, eventArgs) => {
if (eventArgs.IsAuthenticated)
{
App.SuccessfulLoginAction.Invoke();
// Use eventArgs.Account to do wonderful things
App.SaveToken(eventArgs.Account.Properties["access_token"]);
string sessionToken = App.Token; // /* Authenticate the user with Facebook and fetch a session token */;
DateTime expiration = DateTime.Today; ///* The expiration time for the session token */;
string facebookId = Constants.FBAppId;
ParseFacebookUtils.LogInAsync (facebookId, sessionToken, expiration);
} else {
// The user cancelled
}
};
activity.StartActivity (auth.GetUI(activity));
}
}
}
在 Xamarin.Auth Getting Started 页面上,提到您可以关闭 iOS 上的 UI:
auth.Completed += (sender, eventArgs) => {
// We presented the UI, so it's up to us to dimiss it on iOS.
**> DismissViewController (true, null); <**
if (eventArgs.IsAuthenticated) {
// Use eventArgs.Account to do wonderful things
} else {
// The user cancelled
}
};
我找到了 URL 错误的答案,现在当我将 'authorizeUrl:' 更改为“http://www.facebook.com/connect/login_success.html” 并且这个 URl 之后它开始工作了在 FB App 上设置 is.So 现在我的代码可以正常工作了。