【发布时间】:2012-11-21 04:16:53
【问题描述】:
这是发生了什么:
- 当状态发生变化时我的程序会更新
- 状态更改的处理程序在继续之前需要知道用户的 ID;它调用 findUserID()
- findUserID() 从 Facebook Graph API 请求用户 ID
- 状态更改的处理程序在找到该值之前继续执行,因此行为不正确。
- 几秒钟后,跟踪 (Log.d) 显示已找到用户 ID
如果我暂停然后恢复我的程序,会注意到用户 ID,然后我的程序会正常运行;但是,这不应该需要做。如何让我的程序在继续之前等待 Facebook Graph API 的响应?
protected void findUserID(Session session)
{
//userId = null; // Set initial
// If session is open
if (session != null && session.isOpened()) {
// Make an API call to get user data
// and define a new callback to handle the response
Request request = Request.newMeRequest(session, new Request.GraphUserCallback() {
@Override
public void onCompleted(GraphUser user, Response response) {
Session session = Session.getActiveSession();
// If current session matches active session
if (session == Session.getActiveSession()) {
if (user != null) {
userId = user.getId(); // set userId
Log.d("internal", "UserId issss: " + userId);
} // end if user != null
} // end if session == Session.getActiveSession()
} // end onCompleted
}); // end request
Request.executeBatchAsync(request); // Request does not execute unless you call this.
Log.d("findUserID", "The value after request: " + userId);
} // end session open check
}
感谢任何/所有帮助。
【问题讨论】:
标签: android facebook facebook-graph-api user-permissions