2017-04-15 96 views
0

我无法获得facebook sdk4 +的publish_actions许可我面临问题,我发现没有适当的例子可用。如果有任何人有解决方案在这里发布。我发现每个人都显示旧版本的解决方案,但没有找到sdk4 +的解决方案。如何获得发布权限publish_actions在facebook sdk 4+完美的例子

 LoginManager loginManager = LoginManager.getInstance(); 
     loginManager.logInWithPublishPermissions(this, permissionNeeds); 
     Log.e("publish_action", "asking_for_permission"); 

     LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() 
     { 
      @Override 
      public void onSuccess(LoginResult loginResult) 
      { 
       if (AccessToken.getCurrentAccessToken().getPermissions().contains("publish_actions")) 
       { 

        Log.e("publish_action", "permission_activated"); 
        Bitmap image = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher); 
        try { 
         Log.e("publish_action", "permission_activated_inside_try"); 
         SharePhoto photo = new SharePhoto.Builder() 
           .setBitmap(image) 
           .setCaption("A post from Android code") 
           .build(); 

         SharePhotoContent content = new SharePhotoContent.Builder() 
           .addPhoto(photo) 
           .addPhoto(photo) 
           .addPhoto(photo) 
           .build(); 


         ShareApi.share(content, new FacebookCallback<Sharer.Result>() { 
          @Override 
          public void onSuccess(Sharer.Result result) { 
           Log.e("successfull", "photo_uploaded"); 
          } 

          @Override 
          public void onCancel() { 
           Log.e("canceled", "photo_uploaded_cancled"); 
          } 

          @Override 
          public void onError(FacebookException error) { 
           Log.e("error", "photo_upload_error"); 
          } 
         }); 

        } catch (Exception e) { 
         // TODO Auto-generated catch block 
         e.printStackTrace(); 
        } 
       } 

      } 

      @Override 
      public void onCancel() { 
       System.out.println("onCancel"); 
       Log.e("publish_action", "cancel"); 
      } 

      @Override 
      public void onError(FacebookException exception) { 
       Log.e("publish_action", "error = " + exception.getMessage()); 
       System.out.println("onError"); 
      } 
     }); 

回答

0

,我发现这个link你必须尝试这个网址这是publish_actions权限facebokk这对我有帮助的完美演示。

+0

这适用于我 –

1

我有同样的问题,解决办法是

if (!AccessToken.getCurrentAccessToken().getPermissions().contains("PERMISSION_THAT_YOU_NEED")) { 
     LoginManager.getInstance().logInWithPublishPermissions((Activity) viewInterface.getContext(), Arrays.asList("PERMISSION_THAT_YOU_NEED")); 
     return; 

你需要使用logInWithPublishPermissions()后返回,因为用户可能不允许你使用它,但你的代码将继续运行。如果用户提供对此权限的访问权限,则代码将在下次成功完成。

试试这个,希望对你有帮助。

相关问题