我想在 Xamarin Froms Essentials Web Authenticator 之后从 Apple 获取电子邮件和用户名和姓氏等。我只得到仅包含令牌、刷新令牌和令牌 ID 的 WebAuthenticatorResult。如何使用此令牌获取用户信息?我也将 Restful Web Api 与 asp net core 3.1 一起使用。
你能帮我么?苹果文档不清楚,而且很混乱。请帮助...谢谢。
我想在 Xamarin Froms Essentials Web Authenticator 之后从 Apple 获取电子邮件和用户名和姓氏等。我只得到仅包含令牌、刷新令牌和令牌 ID 的 WebAuthenticatorResult。如何使用此令牌获取用户信息?我也将 Restful Web Api 与 asp net core 3.1 一起使用。
你能帮我么?苹果文档不清楚,而且很混乱。请帮助...谢谢。
我不知道您是否可以从WebAuthenticatorResult.Properties Property获取这些用户信息。
如果不能,您可以按照此处所述自行实现 Apple SignIn ,您可以使用 Xamarin.forms 中的 DependencyService 获取这些信息:
public interface IAppleSignInService
{
bool Callback(string url);
Task<AppleAccount> SignInAsync();
}
在 iOS 项目中:
public async Task<AppleAccount> SignInAsync()
{
// Fallback to web for older iOS versions
if (!Is13)
return await webSignInService.SignInAsync();
AppleAccount appleAccount = default;
#if __IOS__13
var provider = new ASAuthorizationAppleIdProvider();
var req = provider.CreateRequest();
authManager = new AuthManager(UIApplication.SharedApplication.KeyWindow);
req.RequestedScopes = new[] { ASAuthorizationScope.FullName, ASAuthorizationScope.Email };
var controller = new ASAuthorizationController(new[] { req });
controller.Delegate = authManager;
controller.PresentationContextProvider = authManager;
controller.PerformRequests();
var creds = await authManager.Credentials;
if (creds == null)
return null;
appleAccount = new AppleAccount();
appleAccount.IdToken = JwtToken.Decode(new NSString(creds.IdentityToken, NSStringEncoding.UTF8).ToString());
appleAccount.Email = creds.Email;
appleAccount.UserId = creds.User;
appleAccount.Name = NSPersonNameComponentsFormatter.GetLocalizedString(creds.FullName, NSPersonNameComponentsFormatterStyle.Default, NSPersonNameComponentsFormatterOptions.Phonetic);
appleAccount.RealUserStatus = creds.RealUserStatus.ToString();
#endif
return appleAccount;
}