2017-06-24 22 views
0

Androidでは、自分のアプリにサインインした後、FacebookのユーザーID番号を取得する方法がわかります。私はこれを試した:AndroidでFacebookのユーザーID番号を取得するには

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

しかし、何らかの理由でそれは私に番号を与えるが、それはユーザーIDではありません。 https://findmyfbid.com/のようなサイトに行くと、「23982739223233」のような正しいIDが表示されます。 Webブラウザとコピーリンクで自分のFacebookプロフィール画像を右クリックしても、リンクの「referrer_profile_id = 23982739223233」が正しいです。

しかし、私はFacebookがこのProfile.getCurrentProfile().getId()

答えて

0

私に完全に異なる番号を与えるあなたは、コード内GraphRequest

使用することができます使用してサインインする:あなたは、ユーザーのFacebookを取得することができますGraph Request応じて

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()); 
        } 
       }); 

をイド、名前、画像、その他の関連情報

+0

おかげで、わからないと見たものであるが、私は([FirebaseUI] httpsを使用://github.com/firebase/FirebaseUI-Android/blob/4e7bce15b2c5ca207fb3f12e4e5e1ff2dfb15ec2/auth/src/main/java/com/firebase/ui/auth/provider/FacebookProvider.java)を使用してサインインフローを処理し、既に実行しています'GraphRequest'です。私はFacebookにサインインしていますので、簡単な方法でユーザーIDを取得できると思いました –

+0

これは非常に厳しい方法ではありません。正しい結果を返すための保証された方法です....あなたはあなたの 'onSuccess (最終LoginResult loginResult) 'IDを取得するコード – rafsanahmad007

+0

ありがとうございます。昨日、サンプルを表示するときに 'GraphRequest'を試しましたが、問題はいつも「Facebookのメールを取得できませんでした。org.json.JSONException:電子メールの値がありません」でした。 Facebookアカウントには電話番号と電子メールが両方あるので、それはうまくいきません。 –

0

ok私はAnswer。 Facebookユーザーの共通IDはないように見えますが、ユーザーが自分のアプリを受け入れると、私のアプリに一意のIDが割り当てられます。またhere

このidは私が

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

関連する問題