如何执行图形 api Facebook Android SDK 来上传照片和标记人物



如何执行 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 上上传照片:

  1. 确保避免正确的坚持"publish_actions","user_photos"
  2. 知道您必须在之前上传照片并在之后标记人物。

在脸书上上传照片

    ... //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);
            ....
}

最新更新