2017-07-26 5 views
-1

私のアプリでログインしたプロフィールのメールを取得しようとしていますが、これに問題があります。AndroidでFacebookのログインAPIを使用しているときにメールを受け取ることができません

onCompleted()私は電子メールを要求してメールを返します。もし私がログを作れば、メールがヌルではないことがわかりますが、ログを私がonCompleted()それ以外の場合はエラー(ailure delivering result ResultInfo{who=null, request=64206, result=-1, data=Intent { (has extras) }} to activity)を投げ、javaNullPointerExceptionになります。

ありがとうございました!

loginButton = (LoginButton) findViewById(R.id.loginButton); 
    loginButton.setReadPermissions(Arrays.asList("public_profile", "email")); 
    loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() { 
     @Override 
     public void onSuccess(LoginResult loginResult) { 
      GraphRequest request = GraphRequest.newMeRequest(loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() { 
       @Override 
       public void onCompleted(JSONObject object, GraphResponse response) { 
        if (response.getError() != null) { 
         System.out.print("ERROR"); 
        } 
        else { 
         fbUserMail = object.optString("email"); 
         Log.d("email",fbUserMail); //THIS GETS ME THE EMAIL 
        } 
       } 
      }); 
      Bundle parameters = new Bundle(); 
      parameters.putString("fields", "email"); 
      request.setParameters(parameters); 
      request.executeAsync(); 

      Log.d("emailoutside", fbUserMail); //THIS THROWS ME A NULLPOINTEREXCEPTION 
      Profile profile = Profile.getCurrentProfile(); 
      goMainActivity(profile,fbUserMail); 
     } 
+0

これを確認してください - > https://stackoverflow.com/a/31692794/3774906 –

+1

[facebook LoginButtonウィジェットからユーザーのメールを受け取る方法](https://stackoverflow.com/questions)の可能な複製/ 31603398/facebook-loginbutton-widgetからユーザーの電子メールを取得する方法) –

答えて

0

私の問題は解決しません。

public class getProfileData extends AsyncTask<AccessToken,String,String> { 

    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 
    } 

    @Override 
    protected String doInBackground(AccessToken... params) { 
     GraphRequest request = GraphRequest.newMeRequest(params[0], new GraphRequest.GraphJSONObjectCallback() { 
      @Override 
      public void onCompleted(JSONObject object, GraphResponse response) { 
       Log.v("LoginScreen", response.toString()); 
       try { 
        name = object.getString("first_name"); 
        surname = object.getString("last_name"); 
        email = object.getString("email"); 
        Log.d("name",name); 
        Log.d("surname",surname); 
        Log.d("email",email); //THIS GETS ME THE EMAIL 
       } catch (JSONException e) { 
        e.printStackTrace(); 
       } 
      } 
     }); 
     Bundle parameters = new Bundle(); 
     parameters.putString("fields", "id,first_name,last_name,email"); 
     request.setParameters(parameters); 
     request.executeAndWait(); 

     return null; 
    } 

    @Override 
    protected void onPostExecute(String s) { 
     Log.d("email",email); //THIS THROWS ME AN EXCEPTION 
     if (profile != null) { 
      Log.d("email", email); //THIS DOESN'T THROW NOTHING 
      Intent main = new Intent(LoginScreen.this, MainActivity.class); 
      main.putExtra("name", profile.getFirstName()); 
      main.putExtra("surname", profile.getLastName()); 
      main.putExtra("imageUrl", profile.getProfilePictureUri(400,400).toString()); 
      main.putExtra("email", s); 
      startActivity(main); 
      finish(); 
     } 
    } 
} 

私は問題がrequest.executeAndWait()から来ると思います。

関連する問題