2013-05-17 95 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

相关问题