android - 使用默认身份验证在 FB 上发布照片并获取照片已发布的消息的简单技术

标签 android android-layout facebook android-manifest

我想使用 Auth 将照片发布到 FB。 我想要任何可以帮助我在 FB 上发布照片的简单演示示例。 Anybudy 可以帮助我吗? 谢谢。

有了 Hardik Answer,我得到了这样的异常:

12-02 14:29:42.820: WARN/Bundle(318): Key access_token expected byte[] but value was a java.lang.String.  The default value <null> was returned.
12-02 14:29:42.850: WARN/Bundle(318): Attempt to cast generated internal exception:
12-02 14:29:42.850: WARN/Bundle(318): java.lang.ClassCastException: java.lang.String
12-02 14:29:42.850: WARN/Bundle(318):     at android.os.Bundle.getByteArray(Bundle.java:1305)
12-02 14:29:42.850: WARN/Bundle(318):     at com.facebook.android.Util.openUrl(Util.java:155)
12-02 14:29:42.850: WARN/Bundle(318):     at com.facebook.android.Facebook.request(Facebook.java:563)
12-02 14:29:42.850: WARN/Bundle(318):     at com.facebook.android.AsyncFacebookRunner$2.run(AsyncFacebookRunner.java:253)
12-02 14:29:42.850: WARN/Bundle(318): Key method expected byte[] but value was a java.lang.String.  The default value <null> was returned.
12-02 14:29:42.860: WARN/Bundle(318): Attempt to cast generated internal exception:
12-02 14:29:42.860: WARN/Bundle(318): java.lang.ClassCastException: java.lang.String
12-02 14:29:42.860: WARN/Bundle(318):     at android.os.Bundle.getByteArray(Bundle.java:1305)
12-02 14:29:42.860: WARN/Bundle(318):     at com.facebook.android.Util.openUrl(Util.java:155)
12-02 14:29:42.860: WARN/Bundle(318):     at com.facebook.android.Facebook.request(Facebook.java:563)
12-02 14:29:42.860: WARN/Bundle(318):     at com.facebook.android.AsyncFacebookRunner$2.run(AsyncFacebookRunner.java:253)
12-02 14:29:42.900: WARN/Bundle(318): Key format expected byte[] but value was a java.lang.String.  The default value <null> was returned.
12-02 14:29:42.910: WARN/Bundle(318): Attempt to cast generated internal exception:
12-02 14:29:42.910: WARN/Bundle(318): java.lang.ClassCastException: java.lang.String
12-02 14:29:42.910: WARN/Bundle(318):     at android.os.Bundle.getByteArray(Bundle.java:1305)
12-02 14:29:42.910: WARN/Bundle(318):     at com.facebook.android.Util.openUrl(Util.java:155)
12-02 14:29:42.910: WARN/Bundle(318):     at com.facebook.android.Facebook.request(Facebook.java:563)
12-02 14:29:42.910: WARN/Bundle(318):     at com.facebook.android.AsyncFacebookRunner$2.run(AsyncFacebookRunner.java:253)
12-02 14:29:44.560: INFO/global(318): Default buffer size used in BufferedOutputStream constructor. It would be better to be explicit if an 8k buffer is required.
12-02 14:29:44.560: WARN/Bundle(318): Key access_token expected byte[] but value was a java.lang.String.  The default value <null> was returned.
12-02 14:29:44.571: WARN/Bundle(318): Attempt to cast generated internal exception:
12-02 14:29:44.571: WARN/Bundle(318): java.lang.ClassCastException: java.lang.String
12-02 14:29:44.571: WARN/Bundle(318):     at android.os.Bundle.getByteArray(Bundle.java:1305)
12-02 14:29:44.571: WARN/Bundle(318):     at com.facebook.android.Util.encodePostBody(Util.java:63)
12-02 14:29:44.571: WARN/Bundle(318):     at com.facebook.android.Util.openUrl(Util.java:182)
12-02 14:29:44.571: WARN/Bundle(318):     at com.facebook.android.Facebook.request(Facebook.java:563)
12-02 14:29:44.571: WARN/Bundle(318):     at com.facebook.android.AsyncFacebookRunner$2.run(AsyncFacebookRunner.java:253)
12-02 14:29:44.571: WARN/Bundle(318): Key method expected byte[] but value was a java.lang.String.  The default value <null> was returned.
12-02 14:29:44.580: WARN/Bundle(318): Attempt to cast generated internal exception:
12-02 14:29:44.580: WARN/Bundle(318): java.lang.ClassCastException: java.lang.String
12-02 14:29:44.580: WARN/Bundle(318):     at android.os.Bundle.getByteArray(Bundle.java:1305)
12-02 14:29:44.580: WARN/Bundle(318):     at com.facebook.android.Util.encodePostBody(Util.java:63)
12-02 14:29:44.580: WARN/Bundle(318):     at com.facebook.android.Util.openUrl(Util.java:182)
12-02 14:29:44.580: WARN/Bundle(318):     at com.facebook.android.Facebook.request(Facebook.java:563)
12-02 14:29:44.580: WARN/Bundle(318):     at com.facebook.android.AsyncFacebookRunner$2.run(AsyncFacebookRunner.java:253)
12-02 14:29:44.613: WARN/Bundle(318): Key format expected byte[] but value was a java.lang.String.  The default value <null> was returned.
12-02 14:29:44.650: WARN/Bundle(318): Attempt to cast generated internal exception:
12-02 14:29:44.650: WARN/Bundle(318): java.lang.ClassCastException: java.lang.String
12-02 14:29:44.650: WARN/Bundle(318):     at android.os.Bundle.getByteArray(Bundle.java:1305)
12-02 14:29:44.650: WARN/Bundle(318):     at com.facebook.android.Util.encodePostBody(Util.java:63)
12-02 14:29:44.650: WARN/Bundle(318):     at com.facebook.android.Util.openUrl(Util.java:182)
12-02 14:29:44.650: WARN/Bundle(318):     at com.facebook.android.Facebook.request(Facebook.java:563)
12-02 14:29:44.650: WARN/Bundle(318):     at com.facebook.android.AsyncFacebookRunner$2.run(AsyncFacebookRunner.java:253)

最佳答案

您好,首先下载 Facebook SDK..

Facebook SDK

然后在Oncreate方法中

//用于认证

public class FacebollAppforPhotoUpload extends Activity {

 //------------------FB-------------------------


Facebook facebook = new Facebook("APP_KEY");
String permissions[] = {""};
 String statusString = "";

 //---------------------------------------------


@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
    WindowManager.LayoutParams.FLAG_FULLSCREEN);




    statusString="testing Post For Application Development";


    setContentView(R.layout.main);

     facebook.authorize(this, permissions, new DialogListener() {
        @Override
        public void onComplete(Bundle values) {


        //  updateStatus(values.getString(Facebook.TOKEN));
            uploadphoto(values.getString(Facebook.TOKEN));

            finish();

        }


        @Override
        public void onFacebookError(FacebookError error) {}

        @Override
        public void onError(DialogError e) {}

        @Override
        public void onCancel() {

            finish();

        }
    });

图片上传方式

public void uploadphoto(String accessToken)
{
    byte[] data = null;

    ContentResolver cr = FacebollAppforPhotoUpload.this.getContentResolver();
   // InputStream fis = cr.openInputStream(localSnapshotUri);
    Bitmap bi = BitmapFactory.decodeResource(getResources(), R.drawable.icon);
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    bi.compress(Bitmap.CompressFormat.JPEG, 100, baos);
    data = baos.toByteArray();    



    Bundle params = new Bundle();
    params.putString("method", "photos.upload");
    params.putByteArray("picture", data);

    AsyncFacebookRunner mAsyncRunner = new AsyncFacebookRunner(facebook);
    mAsyncRunner.request(null, params, "POST", new RequestListener(){

        @Override
        public void onComplete(String response, Object state) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onIOException(IOException e, Object state) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onFileNotFoundException(FileNotFoundException e,
                Object state) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onMalformedURLException(MalformedURLException e,
                Object state) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onFacebookError(FacebookError e, Object state) {
            // TODO Auto-generated method stub

        }},null);
}

关于android - 使用默认身份验证在 FB 上发布照片并获取照片已发布的消息的简单技术,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8352489/

相关文章:

android - 优于 FileObserver

java - 如何从 Crashlytics 中检测崩溃原因?

java - 消息未显示在 Android 中的调用布局中

android - 将左边缘对齐到中心 - RelativeLayout

Facebook 隐私政策 URL : Bad Response Code: URL returned a bad HTTP response code

java - EditText 焦点和光标选择输入到错误的输入字段

android - 创建 Activity 是否比 fragment 更快?

ios - Facebook iOS iOS SDK登录错误

c# - 在使用 ASP.NET Web API 2.0 和身份进行外部登录/注册期间从 Facebook 检索其他个人资料信息

java - 在 API 19 设备上膨胀 TextInputEditText 时出错