【问题标题】:Do intents no longer work for posting images on Facebook?Intent 不再适用于在 Facebook 上发布图片了吗?
【发布时间】:2015-08-16 05:45:22
【问题描述】:
前段时间我使用 Intent 创建了一个应用。现在它不工作了。我在某处了解到,不允许通过意图发布文本和图像。我只是想确认是这样的。
如果这是真的,那么是通过 Facebook SDK 发帖的唯一方法还是有其他简单的方法可以做到这一点?
【问题讨论】:
标签:
java
android
facebook
android-intent
sdk
【解决方案1】:
您可以做的是利用 facebook graph api 使用访问令牌代表用户向 facebook 服务器发出 HTTP 请求。
为了获得实现 facebook 登录所需的访问令牌,您需要熟悉执行此操作的 oauth 和 oauth2 协议。
获得访问令牌后,您可以通过 /me/photosendpoint 将图像发布到 Facebook 帐户。
将图像存储在位图中。并使用以下代码。
HttpClient httpClient = new DefaultHttpClient();
HttpContext localContext = new BasicHttpContext();
HttpPost httpPost = new HttpPost(
"https://graph.facebook.com/me/photos?access_token="
+ AccessTokens.fbaccesstoken);
MultipartEntity entity = new MultipartEntity(
HttpMultipartMode.BROWSER_COMPATIBLE);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
bitmap.compress(CompressFormat.JPEG, 100, bos);
byte[] data = bos.toByteArray();
entity.addPart("source", new ByteArrayBody(data, "myImage.jpg"));
entity.addPart("message", new StringBody(caption.getText()
.toString()));
httpPost.setEntity(entity);
HttpResponse response = httpClient.execute(httpPost,localContext);
facebook sdk 建立在此 API 之上,sdk 大大降低了我们开发人员使用这些功能的复杂性。
P.S:Facebook 会对任何尝试实施 oauth 登录的应用进行审核。更多信息https://developers.facebook.com/docs/facebook-login/review