2013-01-15 20 views
1

我正在使用Android的最新Facebook SDK V3.0 final。我正嘗試將應用程序請求發送給沒有應用程序的臉書粉絲。該代碼是:應用程序Android Facebook sdk 3.0的申請

public void fbookinvite(){ 

     Bundle postParams = new Bundle(); 
     postParams.putString("name", "X"); 
     postParams.putString("message", "DOWNLOAD X."); 

     Session session = Session.getActiveSession(); 

     postParams.putString("access_token", session.getAccessToken()); 

     if (session==null||session.getState().isClosed()){ 
      System.out.println("session is null"); 
     }else{ 
      //meaning we are good to go. 
      Request request = new Request(session,"/friend facebook id/apprequests", postParams, HttpMethod.POST, new Request.Callback() { 

       @Override 
       public void onCompleted(Response response) { 

        System.out.println("response was: "+response.toString()); 
       } 

      }); 

      Request.executeBatchAsync(request); 
     }  
    } 

當代碼運行我從打印響應執行下列操作之一:

responseCode: 400, graphObject: null, error: {HttpStatus: 400, errorCode: 2, errorType: OAuthException, errorMessage: (#2) Failed to create any app request}, isFromCache:false 

...或:

Response: responseCode: unknown, graphObject: null, error: {HttpStatus: -1, errorCode: -1, errorType: null, errorMessage: null}, isFromCache:false} 

我有以下權限:publist_streampublish_actions

解決問題後,我還想知道如何將一組收件人添加到應用程序請求中。

我不想使用Facebook對話框。

+0

我願包含在谷歌Play商店和蘋果AppStore的鏈接到應用頁面的邀請用戶發送給他們的朋友誰做還沒有應用程序,我希望沒有使用Facebook網頁對話框。我該怎麼做? – yz101

回答

1

試試這個:

 Bundle params = new Bundle(); 
     params.putString("message", 
       "Learn how to make your Android apps social"); 
     params.putString("to", "YOUR_FRIEND_UID_HERE"); 
     WebDialog requestsDialog = (new WebDialog.RequestsDialogBuilder(
       this, Session.getActiveSession(), params)) 
       .setOnCompleteListener(new OnCompleteListener() { 

        @Override 
        public void onComplete(Bundle values, 
          FacebookException error) { 
         // your code here 
        } 

       }).build(); 
     requestsDialog.show(); 

這是明確地發送應用程序請求別人的正確方法。如果您不包含to參數,用戶可以選擇他們想要發送給誰。

+1

如何在沒有對話框的情況下做到這一點?我不希望用戶必須看到Facebook對話框並按發送。此外,當我這樣做,它直接到用戶的Android應用程序,而不是用戶的Facebook傳入消息。我希望它是一個使用該應用的邀請,包括它所在的谷歌播放頁面的網址。使用上面的建議代碼,擁有該應用的用戶只需獲得一條消息並打開它即可啓動該應用,而那些沒有該應用的用戶只需從Facebook應用獲得一個空白屏幕即可。 – yz101

+0

沒有對話框就沒有辦法做到這一點。 –

+0

甚至沒有圖api?是否至少有一種方法可以讓webdialog在沒有顯示的情況下自動發送?或另一種隱藏它的方式? – yz101

0
Response: responseCode: unknown, graphObject: null, error: {HttpStatus: -1, errorCode: -1, errorType: null, errorMessage: null}, isFromCache:false} 

這是一個通常與您自己的線程上同時運行FB請求相關的場景。 我瞭解到硬盤的方式爲使用

Request.executeAsync() 

RequestAsyncTask 
相關問題