2011-05-20 129 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

相關問題