0
У меня проблема с доступом к данным, таким как электронная почта и дата рождения. Мне кажется, что есть что-то знак, но я ищу информацию, и я не могу видеть, что происходит on.Maybe кто-то заметит ошибку или встречались с чем-то подобнымFacebook SDK У меня есть доступ к общественным данным
public class MainActivity extends AppCompatActivity {
TextView txtStatus;
LoginButton loginButton;
CallbackManager callbackManager;
public String email,id;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FacebookSdk.sdkInitialize(getApplicationContext());
setContentView(R.layout.activity_main);
initializeControls();
loginWithFB();
}
private void initializeControls(){
callbackManager = CallbackManager.Factory.create();
txtStatus = (TextView)findViewById(R.id.txtStatus);
loginButton = (LoginButton)findViewById(R.id.login_button);
}
private void loginWithFB(){
LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
Log.e("Success", "Login");
Bundle parameters = new Bundle();
parameters.putString("fields", "id, first_name, last_name ,email, gender, birthday");
GraphRequest gr = GraphRequest.newMeRequest(
loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(JSONObject json, GraphResponse response) {
if (response.getError() != null) {
// handle error
System.out.println("ERROR "+response.getError().toString());
} else {
//System.out.println("Success");
String jsonresult = String.valueOf(json);
System.out.println("JSON Result"+jsonresult);
String resp = String.valueOf(response.getJSONObject());
System.out.println("JSON resp "+resp);
}
}
});
gr.setParameters(parameters);
gr.executeAsync();
}
@Override
public void onCancel() {
txtStatus.setText("Cancelled");
}
@Override
public void onError(FacebookException error) {
txtStatus.setText("Error " + error.getMessage());
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
callbackManager.onActivityResult(requestCode, resultCode, data);
}
}
Также обратите внимание на https://developers.facebook.com/docs/facebook-login/permissions/overview: «Если ваше приложение запрашивает более чем public_profile, адрес электронной почты и user_friends будет требуют обзора Facebook, прежде чем ваше приложение может использоваться людьми, отличными от разработчиков приложений ». –
Это означает, что, когда вам нужно больше данных, чем общедоступное, а не выше, я должен применить 'loginButton.registerCallback (callbackManager, новый FacebookCallback()'? Вместо 'LoginManager.getInstance(). RegisterCallback (callbackManager, new FacebookCallback () ' –
programmerJavaPL
, как отметил Гевин Харрис, вам нужно изменить' LoginManager.getInstance() 'на' loginButton' и 'setReadPermissions', например' loginButton.setReadPermissions (Arrayys.asList («public_profile», «email», «user_birthday», «user_friends»)); ' –