从 Xamarin 客户端检索 Facebook 个人资料
Retrieve Facebook profile from Xamarin client
我想在用户登录后从 Facebook 获取基本用户信息。
我查看了 How to: Work with authentication 和 "How to: Retrieve authenticated user information" 部分下的文档,它展示了如何通过使用 HttpClient
从 .NET 后端代码来实现使用 AccessToken 的调用:
var fbRequestUrl = "https://graph.facebook.com/me/feed?access_token="
+ credentials.AccessToken;
由于移动客户端具有我们从 MobileServices 获取的 accessToken,客户端是否可以直接调用 Facebook 端点,或者客户端 SDK 是否为我们提供任何内置功能?
我一直在关注 Xamarin.Forms Sport project and the way they get the user information from Google 是通过硬编码 Google 端点并调用以获取用户信息。
注意:Xamarin.FormsSport 使用移动服务,而不是移动应用程序,因此不确定这是否有任何区别。
听起来您正在执行服务器控制的登录:您正在调用您的后端以与 Facebook 一起进行登录。在此,您的客户端应用程序正在对 .auth/login/facebook 进行 GET 调用,这会打开一个浏览器或 Web 身份验证代理,您可以在其中输入您的凭据。最终结果是您将收到一个 Zumo 访问令牌(不同于 Facebook 访问令牌)。
您不能单独使用 Zumo 访问令牌访问 Facebook API。在您链接的 "How To:" 中,我们向您展示了如何从后端使用 GetAppServiceIdentityAsync 来获取 Facebook 访问令牌。这是可能的,因为您已经通过门户存储了您的 Facebook 客户端 ID,后端可用。
这样进行身份验证的好处是您不必使用移动应用程序部署 Facebook 客户端 ID。但是,如果您想从客户端访问 Facebook API,则需要获取客户端的 Facebook 令牌。
我可以建议的几种方法:
从您的客户处致电 .auth/me。响应将为您提供一个您可以解析的 JSON 对象,该对象应包括与您的 Zumo 令牌关联的 FB 令牌。
编写带有 [Authorize] 属性集的自定义 API,它将执行 GetAppServiceIdentityAsync 并使用 facebook 访问令牌的值进行响应。然后,您可以解析来自客户端的响应。这基本上就是 .auth/me 所做的,但是您可以编写它以仅返回您的 FB 访问令牌。
使用 Facebook .NET SDK http://facebooksdk.net/ 进行客户端定向登录。您将在您的客户端上获得一个 Facebook 令牌,然后您可以使用我们的 LoginAsync(Facebook, access_token) 方法获取 Zumo 令牌,以便您的客户端可以访问 Facebook 和您的移动应用后端。正如我之前提到的,缺点是您必须使用您的应用程序部署您的 FB 客户端 ID。
我想在用户登录后从 Facebook 获取基本用户信息。
我查看了 How to: Work with authentication 和 "How to: Retrieve authenticated user information" 部分下的文档,它展示了如何通过使用 HttpClient
从 .NET 后端代码来实现使用 AccessToken 的调用:
var fbRequestUrl = "https://graph.facebook.com/me/feed?access_token="
+ credentials.AccessToken;
由于移动客户端具有我们从 MobileServices 获取的 accessToken,客户端是否可以直接调用 Facebook 端点,或者客户端 SDK 是否为我们提供任何内置功能?
我一直在关注 Xamarin.Forms Sport project and the way they get the user information from Google 是通过硬编码 Google 端点并调用以获取用户信息。
注意:Xamarin.FormsSport 使用移动服务,而不是移动应用程序,因此不确定这是否有任何区别。
听起来您正在执行服务器控制的登录:您正在调用您的后端以与 Facebook 一起进行登录。在此,您的客户端应用程序正在对 .auth/login/facebook 进行 GET 调用,这会打开一个浏览器或 Web 身份验证代理,您可以在其中输入您的凭据。最终结果是您将收到一个 Zumo 访问令牌(不同于 Facebook 访问令牌)。
您不能单独使用 Zumo 访问令牌访问 Facebook API。在您链接的 "How To:" 中,我们向您展示了如何从后端使用 GetAppServiceIdentityAsync 来获取 Facebook 访问令牌。这是可能的,因为您已经通过门户存储了您的 Facebook 客户端 ID,后端可用。
这样进行身份验证的好处是您不必使用移动应用程序部署 Facebook 客户端 ID。但是,如果您想从客户端访问 Facebook API,则需要获取客户端的 Facebook 令牌。
我可以建议的几种方法:
从您的客户处致电 .auth/me。响应将为您提供一个您可以解析的 JSON 对象,该对象应包括与您的 Zumo 令牌关联的 FB 令牌。
编写带有 [Authorize] 属性集的自定义 API,它将执行 GetAppServiceIdentityAsync 并使用 facebook 访问令牌的值进行响应。然后,您可以解析来自客户端的响应。这基本上就是 .auth/me 所做的,但是您可以编写它以仅返回您的 FB 访问令牌。
使用 Facebook .NET SDK http://facebooksdk.net/ 进行客户端定向登录。您将在您的客户端上获得一个 Facebook 令牌,然后您可以使用我们的 LoginAsync(Facebook, access_token) 方法获取 Zumo 令牌,以便您的客户端可以访问 Facebook 和您的移动应用后端。正如我之前提到的,缺点是您必须使用您的应用程序部署您的 FB 客户端 ID。