2011-10-04 43 views
0

我試圖在兩個用戶之間發送應用程序生成的請求,而不通過JavaScript UI。應用程序生成的apprequests在Silverlight中失敗

FacebookClient client = new FacebookClient(SessionSecret); 

Dictionary<string, string> parameters = new Dictionary<string, string>(); 
parameters["message"] = "Test"; 
parameters["data"] = "test"; 

client.PostCompleted += new EventHandler<FacebookApiEventArgs>(testCompleted); 
client.PostAsync(String.Format("{0}/apprequests", ID), parameters); 

我testCompleted方法FacebookApiEventArgs誤差始終是一個流對象,它期待在空對象引用:

at System.IO.StreamReader..ctor(Stream stream, Encoding encoding, Boolean 
detectEncodingFromByteOrderMarks, Int32 bufferSize) 
at System.IO.StreamReader..ctor(Stream stream) 
at Facebook.FacebookClient.ProcessResponse(HttpHelper httpHelper, Stream 
responseStream, Type resultType, String& responseStr, Exception& exception, Boolean& 
cancelled) 

這是5.2.1。

我做錯了嗎?我也嘗試使用App ID和祕密實例化客戶端,並獲得相同的結果。

它看起來像在PrepareRequest方法Facebook的客戶端代碼中的錯誤的行1671:

if (httpMethod == HttpMethod.Get) 
{ 
    // for GET, all parameters goes as querystrings 
    input = null; 
    queryString.Append(FacebookUtils.ToJsonQueryString(parameters)); 
} 
else 
{ 
    if (parameters.ContainsKey("access_token")) 
    { 
     queryString.AppendFormat("access_token={0}", parameters["access_token"]); 
     parameters.Remove("access_token"); 
    } 

這只是在傳遞給方法的參數將用於獲取呼叫,而不是職位。

回答

0

我去了一個兔子洞,但我並不需要。實際上,問題在於我使用用戶accessToken,而不是從應用程序ID和應用程序密鑰生成新的accessToken。第一行應改爲:

FacebookClient client = new FacebookClient(AppId, AppSecret); 
相關問題