使用 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 消息组件注册推送通知模板

Xamarin MonoAndroid Azure 移动服务 InsertAsync

使用 Xamarin Forms 使用自签名证书对 Azure AD 进行身份验证