2013-05-17 99 views
1

這是我的代碼爲facebook我request.i想要獲得用戶的電子郵件和其他基本info.this代碼工作沒有任何問題在emulator.but在真正的設備電子郵件給null值。 id,fristname ...帶有真正的價值。我如何在真實設備上獲得電子郵件?Facebook的android SDK 3獲取用戶的電子郵件

Request request = Request.newMeRequest(session, 
      new Request.GraphUserCallback() { 


       @Override 
       public void onCompleted(GraphUser user, Response response) { 

        if (user != null) { 



         RequestParams params = new RequestParams(); 

         params.put("email",(String) user.getProperty("email")); 
         params.put("password", ""); 
         params.put("facebook_id", user.getId()); 
         editor.putString("facebook_id", user.getId()); 

         login(params, 
           (String) user.asMap().get("email"), 
           user.getId(), user.getFirstName(), 
           user.getLastName()); 

        } 
       } 
      }); 
    Bundle params = new Bundle(); 
    params.putString("fields", "id,email,first_name,last_name"); 
    request.setParameters(params); 
    request.executeAsync(); 
+0

我遇到同樣的問題,你有沒有得到解決方案? –

回答

2

而是提交me請求的,使用Facebook的LoginButton,並添加一個鉤子攔截用戶信息:

// Intercept the facebook user returned from login 
facebookLoginButton.setUserInfoChangedCallback(new LoginButton.UserInfoChangedCallback() { 

    @Override 
    public void onUserInfoFetched(GraphUser user) { 
     mFacebookUser = user; 

     if (user != null) { 
      LogUtils.LOGFB(TAG, "Got a Facebook user: " + user.getFirstName() + 
        " " + user.getLastName() + ", email: " + user.getProperty("email")); 
     } 
     else { 
      LogUtils.LOGFB(TAG, "No Facebook user"); 
     } 
    } 
}); 

然後添加一個額外的許可來獲得電子郵件:

facebookLoginButton.setReadPermissions(Arrays.asList(
     "email", "user_birthday", ...)); 
+0

我完全是這樣做的,它不適合我。我也嘗試過'user.asMap()。get(「email」)。toString());'但徒勞無功。還有其他建議嗎? – Antrromet

相關問題