我想跟踪从“player_1”发送给其他玩家的邀请以计算它们,结果给予“player_1”一些奖励。就像在PVZ2中一样。
好的,Facebook有针对Unity3d的SDK。这是API调用应用程序请求对话框,允许邀请玩家:
public static void AppRequest(
string message,
string[] to = null,
string filters = "",
string[] excludeIds = null,
int? maxRecipients = null,
string data = "",
string title = "",
FacebookDelegate callback = null)
Facebook doc说了一些关于redirect_url的内容,可以用来跟踪接受缩进的用户: https://developers.facebook.com/docs/reference/dialogs/requests/
但是Unity插件没有这个参数。
doc也说跟随:
请求仅适用于Facebook.com或iOS上的游戏 Android应用。接受游戏的请求将指导该人 到发送请求的应用程序的Canvas页面URL。对于本地人 移动应用程序,接受请求将指导此人到应用程序 在他们的设备上安装或到适当的位置(Apple App 存储或Google Play)以下载应用程序。
游戏仅适用于移动设备。因此我们不需要制作Facebook Canvas应用程序。我应该在我们的网站上实现这个Canvas URL脚本吗?
注入代码(服务器端脚本)以跟踪Facebook应用程序请求的正确位置在哪里?
更新: 感谢Bhavesh Vadalia的回答:https://stackoverflow.com/a/21597185/425707 我决定不在Canvas App中处理好友请求。 这是Facebook SDK 5.0.3的解决方案:
// Quesry string: "/fql?q=SELECT uid, name, is_app_user, pic_square FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = me()) AND is_app_user = 1";
string q = "/fql?q=SELECT+uid,+name,+is_app_user,+pic_square+FROM+user+WHERE+uid+IN+(SELECT+uid2+FROM+friend+WHERE+uid1+=+me())+AND+is_app_user+=+1";
FB.API(q, Facebook.HttpMethod.GET, friendsResult =>
{
if (friendsResult.Error != null)
{
FbDebug.Error(friendsResult.Error);
}
else
{
FbDebug.Log(friendsResult.Text);
}
});
答案 0 :(得分:4)
这是使用facebook graph api工具为我的应用程序提供跟踪代码的工具。希望它对你也有帮助。
我正在使用facebook 3.6 sdk
private void requestMyAppFacebookFriends(Session session) {
Request friendsRequest = createRequest(session);
friendsRequest.setCallback(new Request.Callback() {
@Override
public void onCompleted(Response response) {
List<GraphUser> friends = getResults(response);
Log.e("RESULT : ", "@"+friends.size());
for(int i =0;i<friends.size(); i++){
GraphUser user = friends.get(i);
boolean installed = false;
if(user.getProperty("installed") != null){
installed = (Boolean) user.getProperty("installed");
}
if(installed){
Log.e("USER NAME", "@"+friends.get(i).getId());
}
}
// TODO: your code here
}
});
friendsRequest.executeAsync();
}
private Request createRequest(Session session) {
Request request = Request.newGraphPathRequest(session, "me/friends", null);
Set<String> fields = new HashSet<String>();
String[] requiredFields = new String[] { "id", "name", "picture","installed" };
fields.addAll(Arrays.asList(requiredFields));
Bundle parameters = request.getParameters();
parameters.putString("fields", TextUtils.join(",", fields));
request.setParameters(parameters);
return request;
}