获取 first_name,last_name 脸书的无效范围



我正在使用此代码,但收到无效范围的错误

我想访问这个名字,姓氏和电子邮件。

谁能帮我解决这方面的问题。

这是因为Facebook的权限更改吗?

还是别的什么?

我需要添加其他内容吗?

public class MainActivity extends AppCompatActivity {
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
callbackManager.onActivityResult(requestCode,resultCode,data);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
callbackManager = CallbackManager.Factory.create();
final LoginButton loginButton= (LoginButton)findViewById(R.id.loginButton);
loginButton.setReadPermissions(Arrays.asList("email","name"));
loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {

String accessToken = loginResult.getAccessToken().getToken();
GraphRequest request= GraphRequest.newMeRequest(loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(JSONObject object, GraphResponse response) {
progressDialog.dismiss();
getData(object);
}
});
Bundle parameters = new Bundle();
parameters.putString("fields","id,email,first_name,last_name");
request.setParameters(parameters);
request.executeAsync();
}
});
}

private void getData(JSONObject object)
{
try{
email.setText(object.getString("email"));
first_name.setText(object.getString("first_name"));
last_name.setText(object.getString("last_name"));
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
loginButton.setReadPermissions("public_profile");

设置此权限并使用此权限

protected void getUserDetails(LoginResult loginResult) {
GraphRequest data_request = GraphRequest.newMeRequest(
loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(
JSONObject json_object,
GraphResponse response) {
//here is your login is success now your requirement is start From here
//do your work
Log.e("String Response from Facebook:>",json_object.toString())

}
});
Bundle permission_param = new Bundle();
//width and height is optional parameters
permission_param.putString("fields", "id,name,email,picture.width(120).height(120)");
data_request.setParameters(permission_param);
data_request.executeAsync();

first_name.setText(object.getString("first_name"));
last_name.setText(object.getString("last_name"));
}

您应该直接从 facebeook 获得名称,因为

facebookUser.name = object.getString("name");

尝试检查一下,要获得名字和姓氏,您应该将其拆分。

我已经通过电子邮件传递了名称的权限,删除它后不需要它起作用。感谢您的回答

相关内容

最新更新