1

Я использую Facebook SDK для android как внешнюю библиотеку. Я могу войти в систему через facebook. Но когда я хочу поделиться имиджем и приложением, не зарегистрировавшимся через facebook, я пытаюсь войти в систему, но в в этом случае я получаю исключение и получаю токен доступа как null. Пожалуйста, помогитеFacebook SDK в android

W/com.facebook.Session (15670): не следует передавать разрешение на чтение (письмо) на запрос на публикацию или управление авторизацией W/com.facebook.Session (15670): не следует передавать разрешение на чтение (read_friendlists) на запрос на публикацию или управление авторизацией

Введите код:

String[] permissions = { "email", 
      "user_birthday", 
      "publish_stream", 
      "user_checkins", 
      "friends_checkins", 
      "read_friendlists", 
      "publish_checkins", 
      "publish_actions" }; 
    final static int AUTHORIZE_ACTIVITY_RESULT_CODE = 0; 
facebook = new Facebook(APP_ID); 
            mAsyncRunner = new AsyncFacebookRunner(facebook); 
            facebook.authorize(getActivity(), permissions, AUTHORIZE_ACTIVITY_RESULT_CODE, 
              new DialogListener() { 


               public void onComplete(Bundle values) { 
                System.err.println("Inside oncomplete"); 
                //getProfileInformation(); 


               } 


               public void onFacebookError(FacebookError error) { 
                System.err.println(error.toString()+ "Facebook.authorize Error: "); 

                try { 
                 dialog.dismiss(); 
                } catch (Exception e) { 
                 // TODO: handle exception 
                } 
                dialog=null; 
               } 


               public void onError(DialogError e) { 
                System.err.println(e.toString()+ "Facebook.authorize DialogError: "); 
                Log.d(this.getClass().getName(), 
                  "Facebook.authorize DialogError: " 
                    + e.toString()); 
                try { 
                 dialog.dismiss(); 
                } catch (Exception e1) { 
                 // TODO: handle exception 
                } 
                dialog=null; 
               } 


               public void onCancel() { 
                System.err.println("Facebook authorization canceled"); 
                Log.d(this.getClass().getName(), 
                  "Facebook authorization canceled"); 
                try { 
                 dialog.dismiss(); 
                } catch (Exception e) { 
                 // TODO: handle exception 
                } 
                dialog=null; 
               } 
              }); 

           } 

          } 
         }); 

ответ

1

Сначала скачайте this Facebbok SDK и включите его в проект как проект библиотеки.

В вашей деятельности, где вы хотите разделить изображение ::

private static Bitmap b; 
private static Facebook mFacebook; 
private static AsyncFacebookRunner mAsyncRunner; 
String[] permissions = {"photo_upload" }; 
final static int AUTHORIZE_ACTIVITY_RESULT_CODE = 0; 

В OnCreate() инициализировать эти переменные ::

if (Constant.FACEBOOK_APP_ID == null) 
{ 
     Util.showAlert(this, "Warning", "Facebook Applicaton ID must be " 
         + "specified before running this example: see FbAPIs.java"); 
     return; 
} 

mHandler=new Handler(); 
mFacebook = new Facebook(Constant.FACEBOOK_APP_ID); 
mAsyncRunner = new AsyncFacebookRunner(mFacebook); 
SessionStore.restore(mFacebook, this); 


@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) 
{ 
    switch (requestCode) 
    { 
     case AUTHORIZE_ACTIVITY_RESULT_CODE: 
     { 
     mFacebook.authorizeCallback(requestCode, resultCode, data); 
     break; 
     } 
    } 
} 

onButtonClick, откуда вы собираетесь поделиться a Изображение:

if (!mFacebook.isSessionValid()) 
{ 
    mFacebook.authorize(TabNoteActivity.this, permissions, AUTHORIZE_ACTIVITY_RESULT_CODE, new LoginDialogListener()); 
} 
else 
{ 
    Bundle params = new Bundle(); 
    ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
    Utils.b.compress(Bitmap.CompressFormat.PNG, 100, stream);//Here I am convert the JPG image into bitmap using declaring method in the Utils class 
    byte[] byteArray = stream.toByteArray(); 
    params.putString (Facebook.TOKEN, mFacebook.getAccessToken()); 
    params.putString ("message"," Facebook App Testing"); 
    params.putByteArray("picture",byteArray); 
    mAsyncRunner.request("me/photos", params,"POST", new PhotoUploadListener(),null); 
} 


    public class PhotoUploadListener extends BaseRequestListener 
    { 
     //@Override 
     public void onComplete(final String response, final Object state) 
     { 

      mHandler.post(new Runnable() 
      { 
      // @Override 
      public void run() 
      { 
       Toast.makeText(Activity.this,"Image has been shared Successfully",Toast.LENGTH_LONG).show(); 
      } 
      }); 
     } 

     public void onFacebookError(FacebookError error) 
     { 
      Toast.makeText(getApplicationContext(), "Facebook Error: " + error.getMessage(),Toast.LENGTH_LONG).show(); 
     } 
}