2014-05-14 6 views
2

Travailler sur Facebook. Impossible d'obtenir l'autorisation publish_actions. En utilisant ce code:Autorisation facebook sdk Android

session.requestNewPublishPermissions(new 
Session.NewPermissionsRequest(this, PERMISSION)); 

toute solution ...

+0

Quand il vient à facebook et Android, il y a une bibliothèque open source qui peut simplifier tout pour vous - https://github.com/sromku/android-simple-facebook –

+0

Je travaille sur un de ces échantillons HelloFacebook Je viens de changer le nom du paquet et le nom de la classe et de le lancer. Cela fonctionne très bien pour l'appareil sur lequel fb app est installé et dans d'autres ne peuvent pas obtenir l'autorisation publish_actions – user3584264

+0

J'ai suivi l'exemple https://developers.facebook.com/docs/android/share pour poster sur un mur d'utilisateurs. Cela fonctionne très bien si je me connecte à facebook en utilisant des applications email développeur. Avec les non-développeurs, je ne reçois pas les permissions ... Avez-vous trouvé une réponse au problème? –

Répondre

0
private static final List<String> PERMISSIONS = Arrays.asList("publish_actions"); 
private boolean pendingPublishReauthorization = false; 

à onActivityResult faire ce

Session session = Session.getActiveSession(); 

    if (session != null) { 

     // Check for publish permissions 
     List<String> permissions = session.getPermissions(); 
     if (!isSubsetOf(PERMISSIONS, permissions)) { 
      pendingPublishReauthorization = true; 
      Session.NewPermissionsRequest newPermsnRequest = new Session.NewPermissionsRequest(
        this, PERMISSIONS); 
      session.requestNewPublishPermissions(newPermsnRequest); 
      return; 
     } 
    } 

installe également dans votre classe.

private boolean isSubsetOf(Collection<String> a, 
     Collection<String> b) { 
    for (String string : a) { 
     if (!b.contains(string)) { 
      return false; 
     } 
    } 
    return true; 
} 

En faisant cela, vous serez en mesure d'obtenir toutes les autorisations publiques. vous devez ouvrir la session après avoir obtenu les autorisations de lecture, puis demander uniquement les autorisations de publication.

+0

Ne fonctionne pas .. Boucle – user3584264

0

Facebook sdk ne renvoie que les autorisations de lecture, mais pas les droits d'écriture. Vous pouvez utiliser le point de terminaison "/ me" pour obtenir toutes les autorisations.

final Bundle permBundle = new Bundle(); 
    permBundle.putCharSequence("permission", "publish_actions"); 
    GraphRequest request = new GraphRequest(
      AccessToken.getCurrentAccessToken(), 
      "/me/permissions", permBundle, HttpMethod.GET, 
      new GraphRequest.Callback() { 
       @Override 
       public void onCompleted(GraphResponse graphResponse) { 
        Log.d(TAG, "response2: " + graphResponse.getJSONObject()); 
        try { 
         JSONArray permList = (JSONArray) graphResponse.getJSONObject().get("data"); 
         if(permList.length() == 0){ 
          // no data for perms, hence asking permission 
          askForFBPublishPerm(); 
         }else{ 
          JSONObject permData = (JSONObject) permList.get(0); 
          String permVal = (String) permData.get("status"); 
          if(permVal.equals("granted")){ 
           postToFB(); 
          }else{ 
           askForFBPublishPerm(); 
          } 
         } 
        } catch (JSONException e) { 
         Log.d(TAG, "exception while parsing fb check perm data" + e.toString()); 
        } 

       } 
      } 
    ); 
    request.executeAsync();