使用 Xamarin android 和 azure facebook 身份验证获取用户个人资料/详细信息时出错
Posted
技术标签:
【中文标题】使用 Xamarin android 和 azure facebook 身份验证获取用户个人资料/详细信息时出错【英文标题】:Error in getting user profile/detail using Xamarin android and azure facebook authentication 【发布时间】:2016-05-27 06:28:42 【问题描述】:我正在使用 azure mobileservices facebook 身份验证和 xamarin android 本机应用程序。我在 facebook 和 azure 中完成的所有配置,还添加了所需的权限“public_profile”。
Facebook 登录页面正在显示。在 facebook 中添加凭据后,我想要来自 facebook 的用户配置文件,
但我收到错误“Facebook.FacebookOAuthException: (OAuthException - #1) Bad signature”
我的代码是
user = await client.LoginAsync(this, MobileServiceAuthenticationProvider.Facebook);
userToken = user.MobileServiceAuthenticationToken;
var fb = new FacebookClient();
fb.AccessToken = userToken;
动态 me = fb.Get("me?fields=first_name,last_name"); // 我这里出错了
字符串名字 = me.first_name;
【问题讨论】:
【参考方案1】:您正在使用 Azure 移动身份验证令牌访问 Facebook。您需要使用 Facebook 访问令牌。有两种方法可以做到这一点:
1) 使用 Facebook 客户端身份验证,然后将 facebook 令牌提交到您的 azure 移动应用,以对 azure 移动应用服务进行身份验证。这在 howto 中被记录为“客户端管理的身份验证”:https://azure.microsoft.com/en-us/documentation/articles/app-service-mobile-dotnet-how-to-use-client-library/#authentication
2) 在将 X-ZUMO-AUTH 标头设置为 userToken 的值时,为 https://yoursite.azurewebsites.net/.auth/me 执行 GET - 这将返回一个 JSON 对象,您可以解析该对象以进行 Facebook 身份验证。
在这两种情况下,您都将拥有两个访问令牌 - 一个用于 Azure 移动应用,一个用于 Facebook。然后,您可以使用 facebook 令牌访问 facebook API 以获取更多用户信息。
【讨论】:
我想在 xamarin android 本机应用程序中执行此操作。所以你的选择对我没有用。我已经更新了我的问题。 我不知道你为什么这么说。 Xamarin Android 使用 .NET 库(因此我参考了 .NET 的文档),并且无论客户端如何,PROCESS 都是相同的。您的代码清楚地表明您正在使用 Azure Mobile 的令牌来访问 Facebook,这就是您的根本问题。 我已经解决了使用以下链接***.com/questions/32390377/…【参考方案2】:试试这个:
var userInfo = await Client.InvokeApiAsync("/.auth/me",
System.Net.Http.HttpMethod.Get, null);
【讨论】:
以上是关于使用 Xamarin android 和 azure facebook 身份验证获取用户个人资料/详细信息时出错的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Azure Pipelines 中自动增加 Xamarin Android 内部版本号和版本号?
Azure 移动服务 Xamarin.Android 推送通知示例应用程序出现问题
Xamarin Android 使用 Asp.Net core web api 连接到 Azure Notification Hub [关闭]
无法在 Android 上使用 Xamarin Azure 消息组件注册推送通知模板