我是使用Azure移动服务(或任何移动设备)的新手。 我已按照本教程为Android应用启用Facebook身份验证。 http://azure.microsoft.com/en-us/documentation/articles/mobile-services-how-to-register-facebook-authentication/
我的移动服务有一个.NET后端,客户端是Android。 我还设法将访问令牌保存到表中;
public async Task<IHttpActionResult> PostTodoItem(TodoItem item)
{
var currentUser = User as ServiceUser;
item.UserId = currentUser.Id;
TodoItem current = await InsertAsync(item);
return CreatedAtRoute("Tables", new { id = current.Id }, current);
}
保存的值采用以下格式:Facebook:907xxxxxxxxx757
我正在尝试使用Facebook SDK获取用户的FirstName。
var currentUser = User as ServiceUser;
var accessToken = "current.Id";
var client = new FacebookClient(accessToken);
dynamic me = client.Get("me", new { fields = "name,id" });
string firstName = me.name;
但是在我的Android虚拟设备(AVD)上收到以下错误:“{message:发生了错误}” Eclipse logcat似乎没有返回任何错误...我想因为它不是Android应用程序产生错误而是移动服务。
使用此人的Facebook名称(我当然不会这样做)有效;
var currentUser = User as ServiceUser;
var client = new FacebookClient();
dynamic me = client.Get("zuck" });
为什么这种方法不起作用?
或者我对Facebook令牌的理解不正确? 令牌是否可能存在于AVD上,因此移动服务无法使用令牌?
答案 0 :(得分:1)
似乎我怀疑令牌是否正确。 这似乎有用..
var serviceUser = this.User as ServiceUser;
var identities = await serviceUser.GetIdentitiesAsync();
var fb = identities.OfType<FacebookCredentials>().FirstOrDefault();
var client = new FacebookClient(fb.AccessToken);
dynamic me = client.Get("me", new { fields = "name,id" });
string firstName = me.name;
string lastName = me.last_name;