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,new FacebookCallback()'?而不是'LoginManager.getInstance()。registerCallback(callbackManager,new FacebookCallback ()' –
programmerJavaPL
由于Gavin Harris提到,您需要将LoginManager.getInstance()更改为loginButton和setReadPermissions,例如loginButton.setReadPermissions(Arrays.asList(“public_profile”,“email”, “user_birthday”,“user_friends”));' –