我想知道如何从android应用程序发送应用程序请求到我所有的facebook朋友。我尝试在图形API。但是,我没能完成它。
https://graph.facebook.com/apprequests?ids=friend1,friend2&message='Hi'&method=post&access_token=ACCESS_TOKEN
我知道这是一个重复的问题。但是,我还没有找到答案。我在上面的API上得到这个错误。
"All users in param ids must have accepted TOS."
我希望会有一种方式发送应用程序的请求,从手机上点击所有的朋友。
你收到的错误信息(" param id中的所有用户必须已接受TOS")是因为你试图将应用程序生成的请求发送给未连接到你的应用程序的用户。
查看这里的开发文档
通过请求对话框发送的请求和应用程序生成的请求是不同的,你不能使用应用程序生成的请求来邀请用户到你的应用程序。
不能通过graph api发送Facebook应用请求。你可以使用app requests java-script对话框来发送请求,你只需要在"to"属性中指定用户的id,详见文档。
样本函数:
<script>
FB.init({ appId: '**appId**', status: true, cookie: true, xfbml : true });
function sendRequest(to) {
FB.ui({method: 'apprequests', to: to, message: 'You should learn more about this awesome site.', data: 'tracking information for the user'});
return false;
}
</script>
然后将每个图像的onclick连接到onclick="return sendRequest('**friendId**');"
你也可以在javascript中调用这个函数:它会给你所有有照片的朋友。也是一组朋友谁正在使用相同的应用程序。你可以发送请求给他们中的任何一个。
function sendRequestViaMultiFriendSelector() {
FB.ui({
method: 'apprequests',
message: "You should learn more about this awesome site."
});
}
见Facebook好友请求-错误- '参数id中的所有用户必须接受TOS'
你看过developer.facebook.com上的"Hackbook"演示吗?
你可以参考HACKBOOK APP REQUEST FROM HERE
你可以通过下面的代码实现只向一个朋友发送应用请求。
代码:Bundle params = new Bundle();
JSONObject attachment = new JSONObject();
JSONObject properties = new JSONObject();
JSONObject prop1 = new JSONObject();
JSONObject prop2 = new JSONObject();
JSONObject media = new JSONObject();
JSONStringer actions = null;
try {
attachment.put("name", "YOUR_APP");
attachment.put("href", "http://www.google.com/");
attachment.put("description", "ANY_TEXT");
media.put("type", "image");
media.put("src", "IMAGE_LINK");
media.put("href", "http://www.google.com/");
attachment.put("media", new JSONArray().put(media));
prop1.put("text", "www.google.com");
prop1.put("href", "http://www.google.com");
properties.put("Visit our website to download the app", prop1);
/* prop2.put("href", "http://www.google.com");
properties.put("iTunes Link ", prop2);*/
attachment.put("properties", properties);
Log.d("FACEBOOK", attachment.toString());
actions = new JSONStringer().object()
.key("name").value("APP_NAME")
.key("link").value("http://www.google.com/").endObject();
} catch (JSONException e) {
e.printStackTrace();
}
System.out.println("ACTIONS STRING: "+actions.toString());
System.out.println("ATTACHMENT STRING: "+attachment.toString());
params.putString("actions", actions.toString());
params.putString("attachment", attachment.toString()); // Original
params.putString("to", "YOUR_FRIEND_FACEBOOK_ID");
Utility.mFacebook.dialog(getParent(), "stream.publish", params,new PostDialogListener());
public class PostDialogListener extends BaseDialogListener {
@Override
public void onComplete(Bundle values) {
final String postId = values.getString("post_id");
if (postId != null) {
Toast.makeText(getApplicationContext(), ""+getResources().getString(R.string.facebook_response_msg_posted), Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(getApplicationContext(), ""+getResources().getString(R.string.facebook_response_msg_not_posted), Toast.LENGTH_SHORT).show();
}
}
}
上面的代码工作完美,如果你想张贴Apprequest只在一个朋友的墙上。如果你想在所有墙上发布,那么你必须让asynckTask运行所有朋友的帖子和所有墙上的帖子应用程序请求。
更新这是PHP的链接,做了同样的工作,发送请求给所有的Facebook朋友。
并且[这里清楚地解释了]Facebook阻止向15-20个以上的朋友发送好友请求。
现在,你只有一个选择,这样做是,使用上面的代码在AsyncTask发送朋友请求到所有的朋友一个接一个。