2011-05-20 130 views
8

如何向Graph API发送使用应用程序的邀请?我查看了参考资料,找不到适合的内容。任何线索?Facebook:发送应用程序邀请

+2

现在是不可能的。旧的fbml和新的请求对话框是发送请求的唯一方法。 – DannyKK 2011-05-20 14:28:36

+0

因此无法从我们的服务器发送请求? – 2011-05-20 15:07:09

+2

@Traroth:没错。发送带有POST的直接邀请到{user_id}/apprequests的唯一方式,并且用户必须已经安装了您的应用程序并获得了访问该端点的权限。 – typeoneerror 2011-09-06 16:16:40

回答

4

如果您需要使用restfb,因为我从你的标签了,你可以试试这个:

这是一个自包含JUnit测试检索身份验证令牌和职位的apprequest。不需要用户生成auth_token,但只能向已经授权您的应用的用户发送这样的apprequest。

依赖关系是JUnit,Commons HttpClient和restfb本身。

package com.apprequesttest; 

import org.apache.commons.httpclient.HttpClient; 
import org.apache.commons.httpclient.HttpMethod; 
import org.apache.commons.httpclient.methods.GetMethod; 
import org.junit.Test; 

import com.restfb.DefaultFacebookClient; 
import com.restfb.Facebook; 
import com.restfb.FacebookClient; 
import com.restfb.Parameter; 
import com.restfb.types.FacebookType; 

public class AppRequestTest 
{ 
    @Test 
    public void testAppRequest() throws Exception 
    { 
     String appId = "YOUR_APP_ID"; 
     String appSecret = "YOUR_ACCESS_TOKEN"; 
     String tokenUrl = "https://graph.facebook.com/oauth/access_token?client_id=" + appId + "&client_secret=" + appSecret 
       + "&grant_type=client_credentials"; 
     HttpClient client = new HttpClient(); 
     HttpMethod method = new GetMethod(tokenUrl); 

     client.executeMethod(method); 
     String rawAccessToken = new String(method.getResponseBody()); 

     String accessToken = rawAccessToken.split("=")[1]; 

     FacebookClient facebookClient = new DefaultFacebookClient(accessToken); 

     String apprequestCall = "TARGET_USER_ID/apprequests"; 

     AppRequestResponse apprequest = facebookClient.publish(apprequestCall, 
                   AppRequestResponse.class, 
                   Parameter.with("message", "BANANAMSG"), 
                   Parameter.with("data", "BANANADATA")); 

     System.out.println(apprequest.request); 
     System.out.println(apprequest.to); 

    } 

    /** 
    * Couldn't find any beans that would acomodate this response on restfb so we create our own here 
    * Looks like "to" is an array but this works well enough for the sake of the example 
    */ 
    public static class AppRequestResponse extends FacebookType 
    { 
     private static final long serialVersionUID = 1L; 

     public AppRequestResponse() 
     { 
      // Empty 
     } 

     @Facebook 
     public String request; 

     @Facebook 
     public String to; 
    } 
} 
+0

@garbelin ...我试过你的代码,并能够发送邀请,但我有一个小问题。我不断收到这个异常。我发布了相同的问题http://stackoverflow.com/questions/10460014/facbook-post-userid-apprequest-throws-an-exception-invitation-is-sent-though – Santhosh 2012-05-05 08:17:50

+0

@ skokal01我从来没有得到那些空的403错误。对我来说,它闻起来像一个网络问题。 – garbelini 2012-05-07 09:57:22

+0

嗨,我得到322391074505234作为请求ID和xxxx字段。但我从用户帐户查看时看不到实际的邀请。我可能缺少什么? – kitokid 2012-05-29 03:32:28

5

甲HTML/JavaScript的实施例中描述:

<html> 
    <head> 
    <title>My Great Website</title> 
    </head> 
    <body> 
    <div id="fb-root"></div> 
    <script src="http://connect.facebook.net/en_US/all.js"> 
    </script> 
    <script> 
    FB.init({ 
     appId:'YOUR_APP_ID', cookie:true, 
     status:true, xfbml:true 
    }); 

    FB.ui({ method: 'apprequests', 
     message: 'Here is a new Requests dialog...'}); 
    </script> 
    </body> 
</html> 

可以的JavaScript关联到点击一个链接的事件等

您可以在这里找到详细信息:
http://developers.facebook.com/blog/post/464/

+0

不知道这与邀请 – izb 2011-10-26 14:04:03

+0

这是如何在FB中进行邀请 – 2012-07-04 11:16:25

相关问题