首页 文章

如何跟踪从Unity应用程序发送的Facebook appRequest?

提问于
浏览
0

我想跟踪从“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医生说了一些关于redirect_url的内容,可以用来跟踪接受缩进的用户:https://developers.facebook.com/docs/reference/dialogs/requests/

但Unity插件没有这个参数 .

doc也说如下:

请求仅适用于Facebook.com或iOS和Android应用程序上的游戏 . 接受游戏请求会将此人引导至发送请求的应用的Canvas页面URL . 对于原生移动应用程序,接受请求将指导此人在其设备上安装的应用程序或指向适当的位置(Apple App Store或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);
    }
});

1 回答

  • 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;
        }
    

相关问题