2016-03-31 6 views
1

Ich versuche, auf der Facebook-Wand des Benutzers mit FacebookConnect zu posten, aber die Methode createOauth2() -Methode überschreibt den Bereich durch seine eigenen Berechtigungen.Facebook Graph Apiscope wird überschrieben codenameone

EDIT

if (fb.isNativeLoginSupported()) { 
         Dialog.show("native", "Yes", "Ok", null); 
         if (!fb.hasPublishPermissions()) { 
          Dialog.show("permission", " no publish permission", "ok", null); 
          fb.askPublishPermissions(new LoginCallback() { 
           @Override 
           public void loginSuccessful() { 
            Dialog.show("permission", "accessed: " + fb.hasPublishPermissions(), "Ok", null); 
            System.out.println("permission: " + fb.hasPublishPermissions()); 
            token = fb.getAccessToken().getToken(); 
            PhotoShare share = new PhotoShare(); 
            share.sendPhoto(token, id); 
           } 
           @Override 
           public void loginFailed(String errorMessage) { 
            System.out.println("failed permission: " + errorMessage); 
            Dialog.show("permission error", errorMessage, "Ok", null); 
           } 
          }); 
         } else { 
          Dialog.show("permission", "publish permission", "ok", null); 
          PhotoShare share = new PhotoShare(); 
          share.sendPhoto(token, id); 
         } 
        } else { 
         Dialog.show("permission", "No native support", "Ok", null); 
         fb.setScope("publish_actions"); 
         fb.setCallback(new LoginCallback() { 
          @Override 
          public void loginSuccessful() { 
           token = fb.getAccessToken().getToken(); 
           PhotoShare share = new PhotoShare(); 
           share.sendPhoto(token, id); 
          } 
         }); 
         fb.doLogin(); 
        } 

Die Logincall Rückseite askPublishPermissions wird nie auf dem Android-Gerät genannt. Auch beim Login der App nach Berechtigungen von Freelist und E-Mail fragen, die ich nie gefragt habe. Im Quellcode von FacebookConnect fügt die Methode createOuth() sie im Bereich hinzu, aber ich brauche diese Berechtigungen nicht.

Lösung:

Dies sind die Schritte, die ich für jemand mit dem gleichen Problem gefolgt. Zuerst fand ich ein Problem mit dem Emulator um Erlaubnis fragen. Also habe ich mein eigenes Outh-Login erstellt und um die Erlaubnis gebeten.

Für den Android Build.

  1. Fügen Sie den Build-Hinweis hinzu android.facebook_permissions Schlüssel mit Wert die Berechtigungen, die Sie möchten. Dies ist ein Muss. Geben Sie hier nur die Leseberechtigung und nicht die publish_action Berechtigung oder andere Schreibrechte ein. Wenn Sie keine andere Erlaubnis als Schreibberechtigung benötigen, fügen Sie public_profile hinzu. Dies ist die Standardberechtigung von facebook.
  2. Verwenden Sie FacebookConenct.askPublishPermissions für die Erlaubnis.
  3. Wenn Sie zuerst doLogin() verwenden dann aus irgendeinem Grund askPublishPermission tat nichts in meinem Fall. Also habe ich askPublishPermission ohne Aufruf doLogin(), die automatisch die Login-Seite aufgerufen.

Antwort

0

Wie haben Sie Berechtigungen angefordert?

Haben Sie bemerkt, dass Sie askPublishPermissions anrufen müssen, um zu schreiben?

Im Gegensatz zu einer Webanwendung muss eine native Anwendung nach Schreibberechtigungen fragen.

Haben Sie den Build-Hinweis android.facebook_permissions wie erklärt here?

+0

Ich habe die Frage mit Code aktualisiert und weitere Informationen – umuieme

+0

Ich habe einige Details zu meiner Antwort hinzugefügt. –

+0

android.facebook_permissions und einige andere Dinge lösten das Problem, das ich in meiner Frage aktualisieren werde. Aber ich denke immer noch, es gibt ein Problem für den Emulator, da beim Login nur den Umfang von mir außer Kraft setzt. Bitte überprüfen Sie facebookConnect.createOuth() -Methode. – umuieme