我有两个需要使用我的Facebook对象的活动。第一个活动执行登录过程,第二个活动需要Facebook对象来获取朋友列表。我正在使用一个扩展Application的类来将Facebook对象从第一个活动传输到第二个活动。
这很好用,但是当我注销并登录第一个活动时,我在第二个活动中尝试使用Facebook对象时出现此错误
{"error_code":104,"error_msg":"Requires valid signature","request_args"
当我重新登录时,我正在更新Facebook对象,我正在更新Application类中的Facebook对象。知道为什么我会收到这个错误吗?
答案 0 :(得分:3)
您无需将Facebook对象从一个活动传递到另一个活动,而是将访问令牌和到期时间保存到首选项中,并将其置于其他活动中。
如果用户稍后返回应用程序,这也很好。
您可以使用官方facebook示例中的SessionStore课程,这样可以更轻松地保存/获取身份验证信息。
所以在第一个活动中你可以:
Facebook facebook = new Facebook("APP_ID");
if (!SessionStore.restore(facebook, this)) {
// start the authentication process
}
else {
// start the other activity
}
在第二项活动中:
Facebook facebook = new Facebook("APP_ID");
if (!SessionStore.restore(facebook, this)) {
// start the first activity to authenticate the user
}
else {
// use the facebook object to make graph requests
}