带android的Facebook-获取ID

带android的Facebook-获取ID,android,facebook,Android,Facebook,我有一行代码 String id = facebook.request("me"); System.out.println(id); 这将返回所有详细信息,但我想知道如何仅返回此人的ID 有什么想法吗 谢谢 这将返回已登录用户的Id。同样,您可以通过替换标记名来获取所有数据 这将返回登录用户的Id。同样,您可以通过替换标记名来获取所有数据。它表示您可以请求“me?fields=Id”,而不是“me”,以便只传输所需的数据 但是,使用Android APImAsyncRunner

我有一行代码

String id = facebook.request("me");
        System.out.println(id);
这将返回所有详细信息,但我想知道如何仅返回此人的ID

有什么想法吗

谢谢

这将返回已登录用户的Id。同样,您可以通过替换标记名来获取所有数据

这将返回登录用户的Id。同样,您可以通过替换标记名来获取所有数据。

它表示您可以请求
“me?fields=Id”
,而不是
“me”
,以便只传输所需的数据

但是,使用Android API
mAsyncRunner.request(“me?fields=id”,…)
会导致以下错误,即使在相同的情况下
“me”
也可以正常工作:

{
  "error": {
    "message": "An active access token must be used to query information about the current user.",
    "type": "OAuthException",
    "code": 2500
  }
}
因此,我想获得全部信息并提取Venky解释的ID是最好的方法。

它说您可以请求
“me?fields=ID”
,而不是
“me”
,以便只传输所需的数据

但是,使用Android API
mAsyncRunner.request(“me?fields=id”,…)
会导致以下错误,即使在相同的情况下
“me”
也可以正常工作:

{
  "error": {
    "message": "An active access token must be used to query information about the current user.",
    "type": "OAuthException",
    "code": 2500
  }
}

因此,我想按照文基的解释,获取全部信息并提取身份证是最好的方法。

事实上,莉娜的答案更有效,也可以工作,但缺少一点。。。fields=id应作为新的Bundle对象传递。然后你只能在Facebook的回复中得到ID

Bundle bundle = new Bundle();
bundle.putString("fields", "id");
AsyncFacebookRunner asyncRunner = new AsyncFacebookRunner(facebook);
asyncRunner.request("me", bundle, new AsyncFacebookRunner.RequestListener() {
            public void onMalformedURLException(MalformedURLException e, Object state) {
                // TODO Auto-generated method stub
            }

            public void onIOException(IOException e, Object state) {
                // TODO Auto-generated method stub
            }

            public void onFileNotFoundException(FileNotFoundException e, Object state) {
                // TODO Auto-generated method stub
            }

            public void onFacebookError(FacebookError e, Object state) {
                // TODO Auto-generated method stub
            }

            public void onComplete(String response, Object state) {
                JSONObject jObject;
                try {
                    jObject = new JSONObject(response);
                    Log.d("FACEBOOK ID", jObject.getString("id"));

                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
        });

事实上,莉娜的答案更有效,也能奏效,但少了一点。。。fields=id应作为新的Bundle对象传递。然后你只能在Facebook的回复中得到ID

Bundle bundle = new Bundle();
bundle.putString("fields", "id");
AsyncFacebookRunner asyncRunner = new AsyncFacebookRunner(facebook);
asyncRunner.request("me", bundle, new AsyncFacebookRunner.RequestListener() {
            public void onMalformedURLException(MalformedURLException e, Object state) {
                // TODO Auto-generated method stub
            }

            public void onIOException(IOException e, Object state) {
                // TODO Auto-generated method stub
            }

            public void onFileNotFoundException(FileNotFoundException e, Object state) {
                // TODO Auto-generated method stub
            }

            public void onFacebookError(FacebookError e, Object state) {
                // TODO Auto-generated method stub
            }

            public void onComplete(String response, Object state) {
                JSONObject jObject;
                try {
                    jObject = new JSONObject(response);
                    Log.d("FACEBOOK ID", jObject.getString("id"));

                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
        });

让我们看看你的印刷品里面有什么。