我想使用 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..
然后在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/