我已经从我的Android应用程序共享了一个url到FB:
然后我保存(硬编码)postId
我尝试对该帖子做“fb like”
使用此代码,但收到错误:
Button socialBtn3 = (Button) dialog
.findViewById(R.id.socialBtn3);
socialBtn3.setOnClickListener(new OnClickListener() {
String fbPostId = "685560152_10153809399380153";
@Override
public void onClick(View v) {
new LikeFbPostAsyncTask().execute(fbPostId);
}
});
和此:
public class LikeFbPostAsyncTask extends AsyncTask<String, Void, Void> {
public LikeFbPostAsyncTask() {
}
@Override
protected void onPreExecute() {
Log.i("LikeFbPostAsyncTask", "Starting web task...");
}
@Override
protected Void doInBackground(String... fbPostId) {
Request likeRequest = new Request(Session.getActiveSession(),
fbPostId + "/likes", null, HttpMethod.POST,
new Request.Callback() {
@Override
public void onCompleted(Response response) {
Log.i(TAG, response.toString());
// how to return to ui thread?
// return response;
}
});
Request.executeBatchAndWait(likeRequest);
return null;
}
@Override
protected void onPostExecute(Void res) {
}
}
{响应:responseCode:404,graphObject:null,错误:{HttpStatus: 404,errorCode:803,errorType:OAuthException,errorMessage:(#803) 您请求的一些别名不存在: [Ljava.lang.String; @ 4284cd10},isFromCache:false}
我该如何解决这个问题?
答案 0 :(得分:2)
您正在向AsyncTask(String...
)发送一个String参数数组。
从数组中提取所需的字符串时,您应该这样做:
Request likeRequest = new Request(Session.getActiveSession(),
fbPostId[0] + "/likes", null, HttpMethod.POST,
new Request.Callback() {
而不是:
Request likeRequest = new Request(Session.getActiveSession(),
fbPostId + "/likes", null, HttpMethod.POST,
new Request.Callback() {