我正在使用Facebook API在C#中开发一个网站并登录用户的好友列表。我在Datalist中将此列表与复选框,朋友图片,姓名和用户ID绑定。
当我查看一些复选框并单击按钮时,我想向已检查的朋友发送某种邀请。我想通过私人消息,通知或任何其他解决方案发送邀请(但不在用户的墙上)。这可能吗?
我已经检查了Stackoverflow中已有的所有帖子。 并检查了这一个http://www.fbrell.com/xfbml/fb:server-fbml-multi-friend-selector
答案 0 :(得分:1)
您要找的是"App-generated Requests"
。这些是从您的应用程序内部发送的请求,无需用户查看requests dialog.
以下代码摘自Facebook文档 - https://developers.facebook.com/docs/channels/#requests
<?php
$app_id = YOUR_APP_ID;
$app_secret = YOUR_APP_SECRET;
$token_url = "https://graph.facebook.com/oauth/access_token?" .
"client_id=" . $app_id .
"&client_secret=" . $app_secret .
"&grant_type=client_credentials";
$app_access_token = file_get_contents($token_url);
$user_id = THE_CURRENT_USER_ID;
$apprequest_url ="https://graph.facebook.com/" .
$user_id .
"/apprequests?message='INSERT_UT8_STRING_MSG'" .
"&data='INSERT_STRING_DATA'&" .
$app_access_token . "&method=post";
$result = file_get_contents($apprequest_url);
echo("App Request sent?", $result);
?>
发送后,用户收到的新请求将作为计数器显示 在您的应用程序的书签上,它也会递增计数器 到适当的仪表板。
代码在PHP中,但它使用的是非常通用的file_get_contents()
方法。您可以将此逻辑与任何能够发出HTTP请求的语言一起使用。
答案 1 :(得分:0)
此代码将发布在您朋友的墙上,无论您想发布什么:
for (Int32 i = 1; i < DLFbFriend.Items.Count; i++){
CheckBox Chkbox =(CheckBox)DLFbFriend.Items[i].FindControl("chkUserID");
if (Chkbox.Checked)
{
HiddenField hdfUserId = (HiddenField)DLFbFriend.Items[i].FindControl("hdfUserID");
string d = hdfUserId.Value;//friend's facebook generated id,whom you want to invite
String link = "what ever you want to post";
string url1 = "https://graph.facebook.com/" + d + "/feed?access_token=" + Request.QueryString["access_token"] + "&link=" + link + "&from=" + Session["Pinny_USER"].ToString().Split('~')[0] + "&name=Register with Pinny&message=Your friend invites you&picture=http://168.144.124.15/images/logoPinny.jpeg";
HttpWebRequest request1 = (HttpWebRequest)WebRequest.Create(url1);
request1.Method = "POST";
// execute the request
HttpWebResponse response1 = (HttpWebResponse)request1.GetResponse();
// we will read data via the response stream
System.IO.Stream ReceiveStream1 = response1.GetResponseStream();
StreamReader readStream1 = new StreamReader(ReceiveStream1);
string json1 = readStream1.ReadToEnd();
countinvited += 1;
}
}