web-dev-qa-db-ja.com

AndroidアプリケーションでFacebookログインボタンを使用してFBユーザーIDを取得する方法

SDKのFacebookログインボタンを使用しているアプリケーションを開発しています。 access_tokenのユーザーですが、userIDも必要です。私はほとんどすべてを試しましたが、成功しませんでした。私はそれを達成するためにFacebookチュートリアルを使用しました。これがリンクです: Facebookログインボタン

同じログインボタンからuserIDを取得するのを手伝ってください。

どんな助けも歓迎します。

11
Anupam

ログインに成功したら、次のコードを呼び出す必要があります。応答として、IDでログインユーザーの詳細を取得できます。

Session session = Session.getActiveSession();
Request request = Request.newGraphPathRequest(session, "me", null);
com.facebook.Response response = Request.executeAndWait(request)
4
Santhosh

FB Profileクラス(Facebook SDK 4.0)のgetIdメソッドを使用します。

  Profile profile = Profile.getCurrentProfile();
  System.out.println(profile.getFirstName());
  System.out.println(profile.getId());
11
Deepika
loginResult.getAccessToken().getUserId()
7

あなたは新しいFacebook SDK 3.0を使用する必要があります

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);
        if (Session.getActiveSession().isOpened()) {
            // Request user data and show the results
            Request.executeMeRequestAsync(Session.getActiveSession(), new Request.GraphUserCallback() {

                @Override
                public void onCompleted(GraphUser user, Response response) {
                    // TODO Auto-generated method stub
                    if (user != null) {
                        // Display the parsed user info
                        Log.v(TAG, "Response : " + response);
                        Log.v(TAG, "UserID : " + user.getId());
                        Log.v(TAG, "User FirstName : " + user.getFirstName());

                    }
                }

            });
        }
    }
4
Ketan Mehta

非推奨のAPIを使用する@Ketan Mehta( https://stackoverflow.com/a/17397931/624109 )からの回答に基づいて、次のコードを使用する必要があります。

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data)
{
    super.onActivityResult(requestCode, resultCode, data);

    Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);

    if (Session.getActiveSession().isOpened())
    {
        // Request user data and show the results
        Request.newMeRequest(Session.getActiveSession(), new GraphUserCallback()
        {
            @Override
            public void onCompleted(GraphUser user, Response response)
            {
                if (null != user)
                {
                    // Display the parsed user info
                    Log.v(TAG, "Response : " + response);
                    Log.v(TAG, "UserID : " + user.getId());
                    Log.v(TAG, "User FirstName : " + user.getFirstName());

                }
            }
        }).executeAsync();
    }
}
3
Muzikant

これらのすべての答えは古いSDKに対するものなので、SDK 4.0の場合はここにコードがあります

loginButton.registerCallback(callbackManager, new    FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(LoginResult loginResult) {
            // App code
            Profile profile = Profile.getCurrentProfile();

            Log.d("facebook",profile.getId());
        }

        @Override
        public void onCancel() {
            // App code
            Log.d("facebook","failed");
        }

        @Override
        public void onError(FacebookException exception) {
            // App code
            Log.d("facebook","failed");
        }
    });

同じことを探していましたが、Sessionオブジェクトにアクセスできなくなったように見えるので、上記はユーザープロファイルとユーザーIDを取得する新しい方法です。

3

FacebookグラフAPIを使用すると、JSONを返す呼び出しを行うことができます。これは、以下のコードのようなJSONObjectを使用してAndroidで解析できます。

JSONObject me = new JSONObject(fb.request("me"));
String id = me.getString("id");

次のコードでユーザーIDを取得できます。

document.getElementById('status').innerHTML =
   'Welcome ' + response.name + '!' + "<br />"+
   'Your user ID is : ' + response.id;
1
mrbengi