2013-06-27 51 views
1

我开发一个Android应用程序,而我使用此代码从Facebook获取一些数据获取Facebook的用户电子邮件地址:采用最新的Facebook SDK

public void onFBLoginClick(View view) 
{ 
    // start Facebook Login 
    Session.openActiveSession(this, true, new Session.StatusCallback() 
    { 
     // callback when session changes state 
     @Override 
     public void call(final Session session, SessionState state, Exception exception) 
     { 
      if (session.isOpened()) 
      { 
       // make request to the /me API 
       Request.executeMeRequestAsync(session, new Request.GraphUserCallback() 
       { 
        // callback after Graph API response with user object 
        @Override 
        public void onCompleted(GraphUser user, Response response) 
        { 
         if (user != null) 
         { 
          txtUserName.setText(session.getAccessToken()); 

          saveUserData(user.getId(), user.getName(), user.getBirthday(), user.asMap().get("email").toString()); 
          saveAccessToken(session.getAccessToken()); 

          getFacebookUserProfilePicture(session.getAccessToken()); 
         } 
        } 
       }); 
      } 
     } 
    }); 
} 

但是,我不能得到的电子邮件。始终为空。

我对User & Friend Permissions设置了email权限,在developers.facebook.com上,但它不起作用。

我在做什么错?

+0

http://stackoverflow.com/a/17082098/1939564 –

回答

2

使用此代码打开你的会话,你准备好了!

String[] PERMISSION_ARRAY_READ = {"email","user_birthday"}; 
List<String> PERMISSION_LIST=Arrays.asList(PERMISSION_ARRAY_READ); 
session.openForRead(new Session.OpenRequest(getParent()).setPermissions(PERMISSION_LIST).setCallback(statusCallback)); 

让我知道你是否对此有任何问题。

+0

感谢您的回答,但是,我的代码在哪里,我必须把你的代码? – VansFannel

+0

把它放在第一次调用'session.open ...()'或粘贴你的完整代码我会告诉你。 – dd619

+0

我的完整代码在这里:http://stackoverflow.com/questions/17368614/get-facebook-friends-list-using-openactivesession-or-rest-api。现在我要求朋友名单,我收到电子邮件和user_birthday没有问题。谢谢。 – VansFannel

相关问题