我想用這個簡單的應用程序來顯示我的Facebook名稱,該應用程序在點擊一個按鈕後調用login()
。Android - Facebook SDK獲取用戶名 - Request.GraphUserCallback返回null
會話正確打開,但Request.GraphUserCallback不起作用,似乎返回null。
當我啓動我的應用程序時,LogCat不會顯示任何錯誤,但在Graph API返回用戶時,我在onCompleted上顯示的Toast上看不到我的user.name()
。
這裏是我的代碼,而無需進口,沒有佈局:
public class MainActivity extends Activity {
private Session.StatusCallback statusCallback;
private Request.GraphUserCallback requestGraphUserCallback;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toast.makeText(getApplicationContext(), "Ci siamo", Toast.LENGTH_SHORT).show();
statusCallback= new SessionStatusCallback();
requestGraphUserCallback = new RequestGraphUserCallback();
}
public void login(View view){
Toast.makeText(getApplicationContext(), "Login", Toast.LENGTH_SHORT).show();
// start Facebook Login
Session.openActiveSession(this, true, statusCallback);
Toast.makeText(getApplicationContext(), "finito login", Toast.LENGTH_SHORT).show();
}
//CLASSE SESSIONE
private class SessionStatusCallback implements Session.StatusCallback {
@Override
public void call(Session session, SessionState state, Exception exception) {
if (session.isOpened()) {
// make request to the /me API
Request.newMeRequest(session, requestGraphUserCallback);
}
}
}
//CLASSE GRAPH
private class RequestGraphUserCallback implements Request.GraphUserCallback{
// callback after Graph API response with user object
@Override
public void onCompleted(GraphUser user, Response response) {
if (user != null) {
Toast.makeText(getApplicationContext(), user.getName(), Toast.LENGTH_SHORT).show();
}
}
}
}
什麼,我做錯了什麼? Facebook文檔非常不全面。 已閱讀this問題和this教程(使用我的代碼的合同版本)。
你已經設置了請求權限,facebook sdk有示例登錄代碼。 –
如果你正在談論INTERNET權限是在清單文件 – francescop
沒有,facebook有自己的權限來閱讀用戶的詳細信息。 –