Queria coletar os dados do usuário do face no meu App, porém, eu só recupero os dados quando o usuário entra pela segunda vez, a primeira vez o retorno está vindo nulo, mas quando faço de novo, sem fechar o App, os dados do usuário aparecem. O que posso fazer???
Segue o código:
public class CompartilharActivity extends AppCompatActivity { CallbackManager callbackManager; ProgressDialog mDialog; private ShareDialog shareDialog; final Usuario user = new Usuario(); private String locationID; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_compartilhar); shareDialog = new ShareDialog(this); // intialize facebook shareDialog. callbackManager = CallbackManager.Factory.create(); LoginButton loginButton = (LoginButton)findViewById(R.id.btnShareLinks); loginButton.setReadPermissions(Arrays.asList("public_profile","email","user_birthday","user_location")); loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) { mDialog = new ProgressDialog(CompartilharActivity.this); mDialog.setMessage("Retrieving data..."); mDialog.show(); String accesstoken = loginResult.getAccessToken().getToken(); GraphRequest request = GraphRequest.newMeRequest(loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() { @Override public void onCompleted(JSONObject object, GraphResponse response) { mDialog.dismiss(); Log.d("response", response.toString()); getData(object); try { user.setFirstName(object.getString("first_name")); user.setLastName(object.getString("last_name")); user.setEmail(object.getString("email")); user.setGender(object.getString("gender")); user.setBirthday(object.getString("birthday")); locationID = object.getJSONObject("location").getString("id"); getLocationUser(locationID); } catch (JSONException e) { e.printStackTrace(); } } }); Bundle parameters = new Bundle(); parameters.putString("fields", "id,email,birthday,first_name,last_name,gender,location"); request.setParameters(parameters); request.executeAsync(); } @Override public void onCancel() { } @Override public void onError(FacebookException error) { } }); } public void getData(JSONObject object) { } private void getLocationUser(String id) { Bundle params = new Bundle(); params.putString("location", "id"); new GraphRequest(AccessToken.getCurrentAccessToken(), id + "/?fields=location", params, HttpMethod.GET, new GraphRequest.Callback() { @Override public void onCompleted(GraphResponse response) { Log.e("Response 2", response + ""); try { user.setCountry(String.valueOf(response.getJSONObject().getJSONObject("location").get("country"))); user.setState(String.valueOf(response.getJSONObject().getJSONObject("location").get("state"))); user.setCity(String.valueOf(response.getJSONObject().getJSONObject("location").get("city"))); user.setStreet(String.valueOf(response.getJSONObject().getJSONObject("location").get("street"))); user.setZip(String.valueOf(response.getJSONObject().getJSONObject("location").get("zip"))); Log.e("Location", user.getCountry()); } catch (Exception e) { e.printStackTrace(); } } } ).executeAsync(); } /*public void shareLinks(View view) { if (ShareDialog.canShow(ShareLinkContent.class)) { ShareLinkContent content = new ShareLinkContent.Builder() .setContentUrl(Uri.parse("http://androidlift.info")) .build(); shareDialog.show(content); } }*/ @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); callbackManager.onActivityResult(requestCode,resultCode,data); Toast.makeText(this, this.user.getFirstName(),Toast.LENGTH_LONG).show(); Intent intent = new Intent(CompartilharActivity.this, FinalActivity.class); intent.putExtra("usuario", this.user); startActivity(intent); } }