2013-07-25 70 views
3

我在android中开发了一个应用程序,在该应用程序中我从Facebook获取用户详细信息。我能够获取用户名,姓氏,姓氏,但电子邮件在某些Facebook帐户中为空。在某些Facebook帐户中,我发现电子邮件ID和一些Facebook帐户电子邮件为空,原因是什么在android中获取Facebook用户详细信息

+0

因为他们没有进入或他们限制他人从他人的邮件。 – Karthi

回答

4

问题是电子邮件许可,这是获取电子邮件ID的工作代码。 这是我在这里给出 Unable to access facebook login?

Session.openActiveSession(this, true, new Session.StatusCallback() { 

      // callback when session changes state 
      @Override 
      public void call(Session session, SessionState state, 
        Exception exception) { 
       if (session.isOpened()) { 
        // make request to the /me API 

        List<String> permissions = session.getPermissions(); 
        if (!isSubsetOf(PERMISSIONS, permissions)) { 
         pendingPublishReauthorization = true; 
         Session.NewPermissionsRequest newPermissionsRequest = new Session.NewPermissionsRequest(
           RegisterActivity.this, PERMISSIONS); 
         session.requestNewReadPermissions(newPermissionsRequest); 
         return; 
        } 
        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) { 
           Toast.makeText(
             RegisterActivity.this 
             .getApplicationContext(), 
             "Facebook Error", 
             Toast.LENGTH_LONG).show(); 

          } else { 
           Toast.makeText(
             RegisterActivity.this 
             .getApplicationContext(), 
             user.getName() 
             + " Logged in Successfully.", 
             Toast.LENGTH_LONG).show(); 
           GraphUser abc = user; 

           id = user.getId(); 
           name = user.getName(); 
           gender = user.getProperty("gender") 
             .toString(); 
           editname.setText(name); 
           username.setText(user.getUsername()); 
           JSONObject jo = user 
             .getInnerJSONObject(); 
           Log.d("Details", jo.toString()); 
           try { 
            emailid.setText(user 
              .getProperty("email") 
              .toString()); 
           } catch (Exception e1) { 
            // TODO Auto-generated catch 
            // block 
            e1.printStackTrace(); 
           } 

           try { 
            location = user.getLocation() 
              .getProperty("name") 
              .toString(); 
           } catch (Exception e) { 

            e.printStackTrace(); 
           } 



          } 

          return; 
         } 

        }); 

       } 
      } 
     }); 

onActivityResult方法

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    Session.getActiveSession().onActivityResult(this, requestCode, 
      resultCode, data); 
} 

isSubsetoff()方法

private boolean isSubsetOf(Collection<String> subset, 
     Collection<String> superset) { 
    for (String string : subset) { 
     if (!superset.contains(string)) { 
      return false; 
     } 
    } 
    return true; 
} 

权限根据您的需要

private static final List<String> PERMISSIONS = Arrays.asList("email", 
     "user_about_me", "user_location"); 
+0

感谢阿布舍克...... –

+0

当我在我们的代码中添加权限,然后我发现下面的错误.. –

+0

java.lang.RuntimeException:无法恢复活动{com.parkhya.treebidsale/com.facebook.LoginActivity}:com .facebook.FacebookException:无法使用空调用程序包调用LoginActivity。如果调用者的launchMode是singleInstance,则会发生这种情况。 –

相关问题