2017-06-24 1 views
0

In Android Ich frage mich, wie man eine Facebook-Benutzer-ID-Nummer, nachdem er sich in meiner App angemeldet hat. Ich versuchte dies:Wie man in Facebook Benutzer-ID-Nummer in Android

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

Aber aus irgendeinem Grund, dass mir eine Nummer geben, aber es ist nicht die Benutzer-ID. Wenn ich Websites wie https://findmyfbid.com/ gehe, bekomme ich die richtige ID wie "23982739223233". Auch wenn ich mit der rechten Maustaste auf mein Facebook-Profilbild im Webbrowser klicke und den Link "referrer_profile_id = 23982739223233" in den Link klicke, ist das korrekt.

Aber wenn ich melden Sie sich mit, dass Facebook diese Profile.getCurrentProfile().getId() gibt mir eine ganz andere Zahl

Antwort

0

können Sie GraphRequest

im Code verwenden:

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

In Graph Request Antwort Sie Facebook-Nutzer bekommen Id, Name, Bild und andere relevante Informationen

+0

Dank, nicht sicher, aber ich benutze die [FirebaseUI] (https : //github.com/firebase/FirebaseUI-Android/blob/4e7bce15b2c5ca207fb3f12e4e5e1ff2dfb15ec2/auth/src/main/java/com/firebase/ui/auth/provider/FacebookProvider.java), um den Anmeldevorgang zu verarbeiten, und er wird bereits ausgeführt das 'GraphRequest'. Ich bin in Facebook angemeldet, so dachte ich, ich könnte die Benutzer-ID auf einfache Weise –

+0

Dies ist nicht eine sehr schwierige Art und Weise .. und es ist eine garantierte Möglichkeit, das korrekte Ergebnis zurückgeben .... Sie können nur ändern Sie Ihre onSuccess (Endgültiges LoginResult loginResult) 'Code, um die ID zu erhalten – rafsanahmad007

+0

Danke. Gestern habe ich das 'GraphRequest' versucht, als Sie eine Probe von zeigen, aber das Problem war, dass ich immer die" Fehler beim Abrufen von Facebook E-Mail org.json.JSONException: Kein Wert für E-Mail "bekam. Der Facebook-Account hat sowohl eine Telefonnummer als auch eine E-Mail, vielleicht funktioniert das also nicht. –

0

ok Ich fand die Answer. Es sieht so aus, als gäbe es keine gemeinsame ID für einen Facebook-Nutzer, aber meine App erhält eine eindeutige ID, sobald der Nutzer meine App akzeptiert. here auch

Diese ID ist das, was ich sehe, mit

com.facebook.Profile.getCurrentProfile(). GetId()

Verwandte Themen