Facebook SDK 3 for Android在请求照片上传时出错
我的Android应用程序中有一个位图图像,我需要将其上传到登录用户的墙上,包括一条标题消息 我已经实现了设置会话的登录按钮,在使用Facebook SDK 3 for Android在请求照片上传时出错,android,facebook,facebook-android-sdk,Android,Facebook,Facebook Android Sdk,我的Android应用程序中有一个位图图像,我需要将其上传到登录用户的墙上,包括一条标题消息 我已经实现了设置会话的登录按钮,在使用Session.isOpened()进行检查后,我调用了方法newUploadPhotoRequest(会话、图像、回调) 问题是图片从未上传。显然,登录是有效的,因为session.isOpened()在用户单击登录按钮后返回true。这意味着API密钥、调试/释放密钥散列以及所有这些内容都是正确的 相反,upload方法的回调返回以下响应: {Response:
Session.isOpened()
进行检查后,我调用了方法newUploadPhotoRequest(会话、图像、回调)
问题是图片从未上传。显然,登录是有效的,因为session.isOpened()在用户单击登录按钮后返回true。这意味着API密钥、调试/释放密钥散列以及所有这些内容都是正确的
相反,upload方法的回调返回以下响应:
{Response: responseCode: 200, graphObject: null, error: {HttpStatus: -1, errorCode: -1, errorType: null, errorMessage: null}, isFromCache:false}
下面:应该上载位图的活动(称为FacebookActivity
)后面的代码段
private void startSending() {
((LinearLayout)findViewById(R.id.LoginLayout)).setVisibility(View.INVISIBLE);
((LinearLayout)findViewById(R.id.SendingLayout)).setVisibility(View.VISIBLE);
Request photoRequest = Request.newUploadPhotoRequest(Session.getActiveSession(), picture, new Request.Callback() {
@Override
public void onCompleted(Response response) {
Toast toast;
if(response.getError() == null) {
toast = Toast.makeText(getApplicationContext(), getString(R.string.ask_facebook_sent), Toast.LENGTH_LONG);
}
else {
// ERROR!
toast = Toast.makeText(getApplicationContext(), "Error! " + response.toString(), Toast.LENGTH_LONG);
}
toast.show();
finish();
}
});
Bundle requestParams = photoRequest.getParameters();
requestParams.putString("message", message);
photoRequest.setParameters(requestParams);
Request.executeBatchAsync(photoRequest);
}
一些考虑:
- 图片有效且可见
- Facebook SDK是最新版本(3.0.2)
- 我正在使用真正的设备,API级别为8
- 在Facebook开发人员的应用程序页面中,我按如下方式设置字段:
- 包名称:
(应用程序的名称空间)com.ale.upmap
- 类名:
com.ale.upmap.FacebookActivity
- 包名称:
- 应用程序已启用照片上传权限
问题:我是否也需要设置代码的权限?这不是自动的吗?此外,我没有看到任何使用此方法的示例…您需要“发布”操作权限。您需要
publish\u stream
权限,如本文所述: