0

Я пытаюсь реализовать facebook login с помощью последней версии 3.0 для facebook. Он возвращает только User-ID и User-name. Ниже приведен код, который я реализовал с использованием API-интерфейсов GRAPH.Facebook Android SDK 4.0 не возвращает адрес электронной почты

@Override 
    public void onViewCreated(View view, Bundle savedInstanceState) { 
     super.onViewCreated(view, savedInstanceState); 
     LoginButton loginButton = (LoginButton) view.findViewById(R.id.login_button); 
     textView = (TextView) view.findViewById(R.id.textView); 

     List<String> permissions = new ArrayList<>(); 
     //permissions.add("user_friends"); 
     permissions.add("email"); 
     //permissions.add("user_birthday"); 
     loginButton.setReadPermissions(permissions); 
     loginButton.setFragment(this); 
     loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() { 
      @Override 
      public void onSuccess(LoginResult loginResult) { 
       GraphRequest.newMeRequest(
         loginResult.getAccessToken(),new GraphRequest.GraphJSONObjectCallback() { 

          @Override 
          public void onCompleted(JSONObject jsonObject, GraphResponse graphResponse) { 
           if (graphResponse.getError() != null) { 
            // handle error 
           } else { 
            String email = jsonObject.optString("email"); 
            String id = jsonObject.optString("id"); 
            new GraphRequest(
              AccessToken.getCurrentAccessToken(), 
              "/" + id, 
              null, 
              HttpMethod.GET, 
              new GraphRequest.Callback() { 
               @Override 
               public void onCompleted(GraphResponse graphResponse) { 
                 Log.d("FACEBOOK LOGIN","graph response" +graphResponse.toString()); 
               } 
              } 
            ).executeAsync(); 
            Log.d("FACEBOOK LOGIN ","email id and the user_id of the looged in user is = ::" + email+" ::"+id+"" + 
              "JsonObject from facebook i am getting is :" +jsonObject.toString()); 
            // send email and id to your web server 
           } 

          } 

         }).executeAsync(); 
      } 

      @Override 
      public void onCancel() { 

      } 

      @Override 
      public void onError(FacebookException e) { 

      } 
     }); 

    } 

Также я попытался с помощью API GRAPH EXPLORER, где он показывает мне свой адрес электронной почты, а также день рождения и пол тоже. Ниже приведен снимок его

Snapshot of GraphAPI explorer

+0

он не будет отображать идентификатор электронной почты до тех пор, пока пользователь не станет администратором или не проверит пользователя приложения – TheGreat004

ответ

2

Попробуйте это.

String username,email ; 

    loginButton.registerCallback(callbackManager, 
       new FacebookCallback<LoginResult>() { 
        @Override 
        public void onSuccess(LoginResult loginResult) { 
         new fblogin().execute(loginResult.getAccessToken()); 

        } 

        @Override 
        public void onCancel() { 

        } 

        @Override 
        public void onError(FacebookException e) { 

        } 
       }); 




class fblogin extends AsyncTask<AccessToken, String, String> { 

     @Override 
     protected void onPreExecute() { 
      super.onPreExecute(); 
      pDialog = new ProgressDialog(Login.this); 
      pDialog.setMessage("Loading Data.."); 
      pDialog.setIndeterminate(false); 
      pDialog.setCancelable(false); 
      pDialog.show(); 
     } 

     protected String doInBackground(AccessToken... params) { 
      GraphRequest request = GraphRequest.newMeRequest(params[0], 
        new GraphRequest.GraphJSONObjectCallback() { 
         @Override 
         public void onCompleted(JSONObject object, 
           GraphResponse response) { 

          try { 

           username = object.getString("first_name"); 

           emailid = object.getString("email"); 


          } catch (JSONException e) { 
           // TODO Auto-generated catch 
           // block 
           e.printStackTrace(); 
          } 
         } 
        }); 
      Bundle parameters = new Bundle(); 
      parameters.putString("fields", 
        "id,first_name,email,gender,birthday"); 
      request.setParameters(parameters); 
      request.executeAndWait(); 

      return null; 
     } 

     protected void onPostExecute(String file_url) { 

      pDialog.dismiss(); 

     } 

    } 

Его сделано. !!

0

попробовать это один

loginButton.setReadPermissions(Arrays.asList("public_profile", "user_friends", "email"));

+0

, не имеет значения. Пробовал. –

Смежные вопросы