Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Android中登录Facebook用户id号_Android_Facebook_Login_Facebook Sdk 4.0 - Fatal编程技术网

如何在Android中登录Facebook用户id号

如何在Android中登录Facebook用户id号,android,facebook,login,facebook-sdk-4.0,Android,Facebook,Login,Facebook Sdk 4.0,在安卓系统中,我想知道在他登录到我的应用程序后如何获得Facebook用户id号。我试过这个: com.facebook.Profile.getCurrentProfile().getId() 但出于某种原因,这给了我一个数字,但它不是用户id。 当我访问类似的网站时,我会得到正确的id,如“23982739223”。即使我在网络浏览器中右键单击我的Facebook个人资料图片并复制链接,链接中的“referer\u profile\u id=23982739223”也是正确的 但是当我使用F

在安卓系统中,我想知道在他登录到我的应用程序后如何获得Facebook用户id号。我试过这个:

com.facebook.Profile.getCurrentProfile().getId()
但出于某种原因,这给了我一个数字,但它不是用户id。 当我访问类似的网站时,我会得到正确的id,如“23982739223”。即使我在网络浏览器中右键单击我的Facebook个人资料图片并复制链接,链接中的“referer\u profile\u id=23982739223”也是正确的

但是当我使用Facebook登录时,这个
配置文件。getCurrentProfile().getId()
给了我一个完全不同的号码,你可以使用它

代码:

 List<String> permissionNeeds = Arrays.asList(
                "public_profile", "email", "user_birthday", "user_friends");

 loginButton.setReadPermissions(permissionNeeds);


 loginButton.registerCallback(callbackManager,
                new FacebookCallback<LoginResult>() {
                    @Override
                    public void onSuccess(LoginResult loginResult) {
                        try {
                            GraphRequest request = GraphRequest.newMeRequest(
                                    loginResult.getAccessToken(),
                                    new GraphRequest.GraphJSONObjectCallback() {
                                        @Override
                                        public void onCompleted(JSONObject object, GraphResponse response) {
                                            // Application code
                                            try {
                                                Log.v("FACEBOOK LOGIN", response.toString());
                                                String fb_id = object.getString("id");   //FaceBook User ID
                                                String fb_name = object.getString("name");
                                                String fb_email = object.getString("email");
                                                String profilePicUrl = "https://graph.facebook.com/" + fb_id + "/picture?width=200&height=200";
                                            } catch (Exception e) {
                                                e.printStackTrace();
                                            }
                                        }
                                    });
                            Bundle parameters = new Bundle();
                            parameters.putString("fields", "id,name,email,picture.type(small)");
                            request.setParameters(parameters);
                            request.executeAsync();

                        } catch (Exception e) {
                            Log.d("ERROR", e.toString());
                        }
                    }

                    @Override
                    public void onCancel() {
                        Log.d("FACEBOOK ERRROR", "cancelled");
                    }

                    @Override
                    public void onError(FacebookException exception) {
                        Log.d("FACEBOOK ERRROR", exception.toString());
                    }
                });
List permissionNeeds=Arrays.asList(
“公众档案”、“电子邮件”、“用户生日”、“用户朋友”);
setReadPermissions(permissionNeeds);
loginButton.registerCallback(callbackManager,
新建FacebookCallback(){
@凌驾
成功时公共无效(LoginResult LoginResult){
试一试{
GraphRequest请求=GraphRequest.newmereRequest(
loginResult.getAccessToken(),
新建GraphRequest.GraphJSONObjectCallback(){
@凌驾
未完成公共无效(JSONObject对象,GraphResponse响应){
//应用程序代码
试一试{
Log.v(“FACEBOOK登录”,response.toString());
String fb_id=object.getString(“id”);//FaceBook用户id
字符串fb_name=object.getString(“名称”);
String fb_email=object.getString(“email”);
字符串profilePicUrl=”https://graph.facebook.com/“+fb_id+”/图片?宽度=200,高度=200”;
}捕获(例外e){
e、 printStackTrace();
}
}
});
Bundle参数=新Bundle();
参数.putString(“字段”、“id、名称、电子邮件、图片.类型(小)”);
请求。设置参数(参数);
request.executeAsync();
}捕获(例外e){
Log.d(“错误”,例如toString());
}
}
@凌驾
公开作废{
Log.d(“FACEBOOK错误”、“取消”);
}
@凌驾
public void onError(facebook异常){
Log.d(“FACEBOOK错误”,exception.toString());
}
});
图形请求
响应中,您可以获得用户的Facebook Id、姓名、图片和其他相关信息

好的,我找到了。看起来Facebook用户没有通用id,但只要用户接受我的应用,我的应用就会被分配一个唯一的id。也

这个身份证就是我看到的

com.facebook.Profile.getCurrentProfile().getId()


谢谢,不确定,但我使用来处理登录流,它已经运行了
GraphRequest
。我登录了Facebook,所以我想我可以用一种简单的方式获取用户id。这不是一种非常困难的方式。而且这是一种返回正确结果的保证方式。您只需更改
onSuccess(final LoginResult LoginResult)
代码即可获取id谢谢。昨天我确实尝试了
GraphRequest
,正如您展示的示例一样,但问题是我总是遇到“检索Facebook电子邮件org.json.JSONException失败:电子邮件没有价值”。Facebook账户上都有电话号码和电子邮件,也许这就是它不起作用的原因。你需要在你的facebook个人资料中公开电子邮件。你还需要添加权限:可以检查我的其他答案:默认情况下,电子邮件是公开的,我需要的权限仅限于用户id。当使用
参数时,你在答案中显示的GraphRequest代码有效。putString(“字段”,“id”);唯一的问题是返回的id不是我登录Facebook的用户。id号与此“”id完全错误,因此编号为100015028951073。。。