使用Facebook Graph API分享设备视频URL遇问题求助
解决Facebook Graph API分享视频URL的常见问题及方案
我来帮你排查下使用这段Graph API代码时可能遇到的问题,给你几个针对性的解决方案:
一、核心参数与权限检查
- 权限缺失:确保你的Access Token拥有
publish_video(个人账号分享)或pages_publish_video(分享到主页)权限,同时user_videos权限也得勾选。注意要用用户授予的长期有效Token,测试用的短期Token很容易失效,你可以在Graph Explorer里先验证权限是否正确配置。 - 视频URL合法性:
file_url必须是公开可直接访问的视频文件链接(比如后缀为.mp4、.mov的直接文件地址),不能是网页链接、带跳转的URL或者需要登录才能访问的地址。你可以先在浏览器里打开这个URL,确认能直接下载播放,否则Facebook服务器抓不到文件。 - JSON构造错误:手动拼接JSON字符串容易出现语法问题,建议用安全的方式构建参数:
JSONObject params = new JSONObject(); try { params.put("file_url", "你的公开视频文件URL"); params.put("description", "Android upload"); } catch (JSONException e) { e.printStackTrace(); }
二、请求执行与错误排查
- 别忘了发送请求:你这段代码只创建了GraphRequest对象,但没有调用
request.executeAsync()来发送请求!这是很多人容易忽略的关键步骤,一定要在创建完request后加上这行代码。 - 捕获详细错误信息:在回调里打印完整的响应错误,能快速定位问题:
比如错误码100代表参数错误,200代表权限不足,根据提示就能精准修复。@Override public void onCompleted(GraphResponse response) { if (response.getError() != null) { Log.e("FBVideoUpload", "错误信息: " + response.getError().getErrorMessage()); Log.e("FBVideoUpload", "错误代码: " + response.getError().getErrorCode()); } else { Log.d("FBVideoUpload", "上传成功,返回数据: " + response.getRawResponse()); } }
三、其他注意事项
- 视频规格限制:Facebook对上传视频有大小(最大10GB)和格式(支持MP4、MOV等)要求,确保你的视频符合规范。
- 网络环境:如果在国内环境,需要确保设备能正常访问Facebook服务器,否则请求会超时或失败。
修正后的完整代码
AccessToken token = AccessToken.getCurrentAccessToken(); GraphRequest request = null; try { JSONObject params = new JSONObject(); params.put("file_url", "https://example.com/your-video-file.mp4"); params.put("description", "Android upload"); request = GraphRequest.newPostRequest( token, "/me/videos", params, new GraphRequest.Callback() { @Override public void onCompleted(GraphResponse response) { if (response.getError() != null) { Log.e("FBVideoUpload", "上传失败: " + response.getError().getErrorMessage()); } else { Log.d("FBVideoUpload", "上传成功!视频ID: " + response.getJSONObject().optString("id")); } } }); // 必须执行这行才会发送请求 request.executeAsync(); } catch (JSONException e) { e.printStackTrace(); }
内容的提问来源于stack exchange,提问作者Mike
相关产品推荐
相关产品推荐

