2017-04-11 62 views
0
分享它的选项后,电子邮件ID是不是通过图形API访问

我的代码如下所示:为什么即使能够在轮廓

facebookButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       LoginManager.getInstance().logInWithReadPermissions(LogInActivity.this, 
         Arrays.asList("public_profile", "email")); 

       LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() { 
        @Override 
        public void onSuccess(LoginResult loginResult) { 
         //set login status 
         SessionManager.get(LogInActivity.this).setLoginStatus(true); 
         graphRequest(loginResult); 
        } 

        @Override 
        public void onCancel() { 
         // not called 
         Toast.makeText(getApplicationContext(), "fail", Toast.LENGTH_SHORT).show(); 
        } 

        @Override 
        public void onError(FacebookException e) { 
         // not called 
         Toast.makeText(getApplicationContext(), "error", Toast.LENGTH_SHORT).show(); 
        } 
       }); 
      } 
     }); 

private void graphRequest(LoginResult loginResult) { 
     showProgressDialog(); 
     GraphRequest request = GraphRequest.newMeRequest(
       loginResult.getAccessToken(), 
       new GraphRequest.GraphJSONObjectCallback() { 
        @Override 
        public void onCompleted(JSONObject object, GraphResponse response) { 


         try { 
          if (object.has("email")) { 
           //store session manager 
           email = object.getString("email"); 
           SessionManager.get(LogInActivity.this).setEmailId(email); 
          } 
          if (object.has("id")) { 
           faceBookId = object.getString("id"); 
           picUrl = "https://graph.facebook.com/" + faceBookId 
             + "/picture?type=large"; 
           //store session manager 
           SessionManager.get(LogInActivity.this).setProfilePic(picUrl); 
//        downLoadImage(url); 

          } 
          if (object.has("name")) { 
           //store session manager 
           name = object.getString("name"); 
           SessionManager.get(LogInActivity.this).setPersonName(name); 
          } 
          downLoadImage(picUrl, name, email, "0"); 
//       Toast.makeText(getApplicationContext(), email, Toast.LENGTH_LONG).show(); 
         } catch (JSONException e) { 
          e.printStackTrace(); 
         } 

        } 
       }); 


     Bundle parameters = new Bundle(); 
     parameters.putString("fields", "id,name,email,picture.type(small)"); 
     request.setParameters(parameters); 
     request.executeAsync(); 


    } 

这里的问题是,我没能获得电子邮件ID甚至启用后允许朋友将我的电子邮件地址包含在我的Facebook个人资料中的下载您的信息选项中,是否有任何其他方式获取电子邮件ID?

回答

0

试一试

String email = ""; 
try { 
     email = URLDecoder.decode(object.optString("email") 
    } catch (UnsupportedEncodingException e) { 
     e.printStackTrace(); 
    }