使用 Windows Facebook SDK FBUser class 丢失信息
Using the Windows Facebook SDK the FBUser class misses information
使用 Windows SDK for Facebook 我已经成功登录并设置了正确的权限来检索一些信息。
这是使用此代码完成的
FBSession sess = FBSession.ActiveSession;
sess.FBAppId = FBAppId;
sess.WinAppId = WinAppId;
// Add permissions
sess.AddPermission("public_profile");
// Do the login
await sess.LoginAsync();
现在的问题是我只能从 FBUser 中检索到一小部分信息,而不是其中存在的所有字段,例如:
sess.User.Name; // This WORKS
sess.User.Id; // This WORKS
sess.User.FirstName; // DOESN'T WORK
sess.User.LastName; // DOESN'T WORK
sess.User.Locale; // DOESN'T WORK
...
与 ActiveSession 关联的 FBUser 从一开始就只填充您从初始 "did login work" 请求(这是对 /me Uri 的标准请求)获得的数据。
这仅包括:
- 全名
- 脸书账号
要获取有关用户的更多数据,您需要使用 Graph API,并将您感兴趣的字段作为参数包含在请求中。
这是一个使用 first_name、last_name 和用户区域设置更新当前 FBUser 的示例。
// This is the current user that we're going to add info to
var currentUser = FBSession.ActiveSession.User;
// Specify that we want the First Name, Last Name and Locale that is connected to the user
PropertySet parameters = new PropertySet();
parameters.Add("fields", "locale,first_name,last_name");
// Set Graph api path to get data about this user
string path = "/me/";
// Create the request to send to the Graph API, also specify the format we're expecting (In this case a json that can be parsed into FBUser)
FBSingleValue sval = new FBSingleValue(path, parameters,
new FBJsonClassFactory(FBUser.FromJson));
// Do the actual request
FBResult fbresult = await sval.Get();
if (fbresult.Succeeded)
{
// Extract the FBUser with new data
var extendedUser = ((FBUser)fbresult.Object);
// Attach the newly fetched data to the current user
currentUser.FirstName = extendedUser.FirstName;
currentUser.LastName = extendedUser.LastName;
currentUser.Locale= extendedUser.Locale;
}
请注意示例代码仅包含极少量的验证。由于这包括网络调用,因此应添加更多内容。
使用 Windows SDK for Facebook 我已经成功登录并设置了正确的权限来检索一些信息。
这是使用此代码完成的
FBSession sess = FBSession.ActiveSession;
sess.FBAppId = FBAppId;
sess.WinAppId = WinAppId;
// Add permissions
sess.AddPermission("public_profile");
// Do the login
await sess.LoginAsync();
现在的问题是我只能从 FBUser 中检索到一小部分信息,而不是其中存在的所有字段,例如:
sess.User.Name; // This WORKS
sess.User.Id; // This WORKS
sess.User.FirstName; // DOESN'T WORK
sess.User.LastName; // DOESN'T WORK
sess.User.Locale; // DOESN'T WORK
...
与 ActiveSession 关联的 FBUser 从一开始就只填充您从初始 "did login work" 请求(这是对 /me Uri 的标准请求)获得的数据。
这仅包括:
- 全名
- 脸书账号
要获取有关用户的更多数据,您需要使用 Graph API,并将您感兴趣的字段作为参数包含在请求中。
这是一个使用 first_name、last_name 和用户区域设置更新当前 FBUser 的示例。
// This is the current user that we're going to add info to
var currentUser = FBSession.ActiveSession.User;
// Specify that we want the First Name, Last Name and Locale that is connected to the user
PropertySet parameters = new PropertySet();
parameters.Add("fields", "locale,first_name,last_name");
// Set Graph api path to get data about this user
string path = "/me/";
// Create the request to send to the Graph API, also specify the format we're expecting (In this case a json that can be parsed into FBUser)
FBSingleValue sval = new FBSingleValue(path, parameters,
new FBJsonClassFactory(FBUser.FromJson));
// Do the actual request
FBResult fbresult = await sval.Get();
if (fbresult.Succeeded)
{
// Extract the FBUser with new data
var extendedUser = ((FBUser)fbresult.Object);
// Attach the newly fetched data to the current user
currentUser.FirstName = extendedUser.FirstName;
currentUser.LastName = extendedUser.LastName;
currentUser.Locale= extendedUser.Locale;
}
请注意示例代码仅包含极少量的验证。由于这包括网络调用,因此应添加更多内容。