如何执行 graph-api Facebook Android SDK 上传照片和标记人物?在网络上,有很多与 facebook sdk for android 混淆。
我的第一个方法
Bitmap img = bitmap;
if (img != null) {
Request request = Request.newUploadPhotoRequest(Session.getActiveSession(), img, uploadPhotoRequestCallback);
Bundle parameters = request.getParameters();
parameters.putString("message", "Winner @[" + uid1 + "] Second @[" + uid2 + "] Terzo @[" + uid3 + "]");
// add more params here
request.setParameters(parameters);
request.executeAsync();
}
但它不标记人员https://developers.facebook.com/docs/opengraph/guides/tagging/
我在上面总结了我的问题,因为我发布了 2 个问题而没有回复。所以我解决了我的问题,我正在发布一个解决方案来帮助堆栈溢出社区的另一个人。
要使用 facebook sdk 3.5 在 Facebook 上上传照片:
- 确保避免正确的坚持"publish_actions","user_photos"
- 知道您必须在之前上传照片并在之后标记人物。
在脸书上上传照片
... //put update method where you need
Session session = Session.getActiveSession();
Bitmap img = .... //your bitmap
if (img != null) {
Request request = Request.newUploadPhotoRequest(Session.getActiveSession(), img, uploadPhotoRequestCallback);
Bundle parameters = request.getParameters();
parameters.putString("message", "my personal massage");
// add more params here
request.setParameters(parameters);
request.executeAsync();
}
...
private String idUploadResponse;
Request.Callback uploadPhotoRequestCallback = new Request.Callback() {
@Override
public void onCompleted(Response response) {
if (response.getError() != null) {
// post error
} else {
idUploadResponse= (String) response.getGraphObject().getProperty("id");
if (idUploadResponse!= null) {
String fbPhotoAddress = "https://www.facebook.com/photo.php?fbid=" + idUploadResponse;
tagPeople();
} else {
// error
}
}
}
};
idUploadResponse 是 facebook 上的照片 ID。
使用idUploadResponse,您可以标记朋友。uid1 变量包含用户的 ID(从 Facebook 获取)。
public void tagPeople(){
Bundle params = new Bundle();
params.putString("to", uid1);
Session session = Session.getActiveSession();
final String requestId = idUploadResponse +"/tags";
Request request = new Request(session, requestId, params, HttpMethod.POST, new Request.Callback() {
public void onCompleted(Response response) {
GraphObject graphObject = response.getGraphObject();
FacebookRequestError error = response.getError();
if (error != null) {
Log.e("Error", error.getErrorMessage());
}
}
});
Request.executeAndWait(request);
}
标记多用户
protected void tagPeople() {
Bundle params = new Bundle();
String multiTag= "[{'tag_uid':'"+uid1+"'} ,{'tag_uid':'"+uid2+"'}, {'tag_uid':'"+uid3+"'}]";
params.putString("tags", multiTag);
....
}