2014-01-08 57 views
0

如何执行graph-api Facebook Android SDK来上传照片和标记人物? 在网上有很多与Android的Facebook的SDK混淆。如何执行graph-api Facebook Android SDK来上传照片和标记人物?

我的第一种方法

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

我总结了我上面的问题,因为我张贴了2个问题没有响应。 所以我解决了我的问题,我发布了一个解决方案,以帮助另一个人的stackoverflow社区。

  1. 就一定要断言右边persmission“publish_actions”,“user_photos”
  2. 知道,你必须在上传之前的照片和标签后人们:

    要使用Facebook SDK 3.5上传在Facebook上的照片。

要上传在Facebook上的照片

... //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上的照片的身份证。

用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); 
      .... 
} 
+0

如何给予相应的权限? – RobinHood

+1

非常感谢你张贴答案..god祝福你:) – jyomin