【问题标题】:Facebook SDK in android安卓中的 Facebook SDK
【发布时间】:2013-01-04 10:41:31
【问题描述】:

我正在使用 Facebook SDK for android 作为外部库。我可以通过 facebook 登录。但是当我想共享图像并且应用程序尚未通过 facebook 登录时,我正在尝试登录,但在这种情况下我是获取异常并将访问令牌获取为空。请帮助

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

                                }

                            }
                        });

【问题讨论】:

    标签: android facebook android-intent android-emulator android-facebook


    【解决方案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 从您要分享图片的地方 ::

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-03
      • 2012-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多