2011-01-19 131 views
0

我試圖在我的網站上提供允許用戶爲其預訂創建Facebook事件的設施。我的應用程序牆上的facebook create_event帖子不是用戶的牆

http://developers.facebook.com/docs/reference/api/event/

現在即時通訊做正確的流程:

1)首先得到授權,請求訪問令牌與在返回的「密碼」,用戶 https://graph.facebook.com/oauth/authorize?client_id=APP_ID&redirect_uri=http://urlimredirectingto.comtype=web_server

2)步驟1 https://graph.facebook.com/oauth/access_token

3)使用access_token創建事件...

string facebookCreateUri = string.Format("https://graph.facebook.com/{0}/events", loggedInMember.FacebookUID); 

    var formData = new HttpUrlEncodedForm() 
    { 
    {"access_token", accessToken}, 
    {"owner", loggedInMember.FacebookUID}, 
    {"description", "nice event that should be on the owners wall"}, 
    {"name", "event on the users wall"}, 
    {"start_time", "1272718027"}, 
    {"end_time", "1272718027"}, 
    {"location", "rochester"}, 
    {"privacy","OPEN"}  
    }; 

    HttpContent content = HttpContent.Create(formData); 
    HttpClient client = new HttpClient(); 

    var response = client.Post(facebookCreateUri, "application/x-www-form-urlencoded", content); 

但事件發佈在我的應用程序的牆上,而不是用戶的牆上。它不應該與authentication/access_token元素有任何關係,因爲我使用相同的過程在用戶的牆上發佈。 (http://developers.facebook.com/docs/reference/api/status/),這工作得很好。

回答

1

我回來了一個解決方案,經過一週的工作在Facebook SDK的許多功能,它終於工作!

protected void onPostEvent(object sender, EventArgs e) 
    { 
     if (CanvasAuthorizer.Authorize()) 
     { 
      var fb = new FacebookWebClient(CanvasAuthorizer.FacebookWebRequest); 

      dynamic parameters = new ExpandoObject(); 
      parameters.description = txtEvDett.Text; 
      parameters.name = txtEvName.Text; 
      parameters.start_time = DateTime.Now.ToString("yyyyMMdd"); 
      parameters.end_time = DateTime.Now.AddDays(1).ToString("yyyyMMdd"); 
      parameters.access_token = CanvasAuthorizer.FacebookWebRequest.AccessToken; 

      dynamic eventDet = fb.Post("me/events", parameters); 

      litEvent.Text = String.Format("You have created the event with ID: {0}", eventDet.id); 
      lnkEvent.Visible = true; 
      lnkEvent.NavigateUrl = String.Format("http://www.facebook.com/event.php?eid={0}", eventDet.id); 
     } 
    } 

對於事件,你有權要求create_event許可。

您應該使用/me/events來發布您的活動。

我從Codeplex用戶使用Facebook的C#SDK - 可用於dld的最新版本(2011年8月 - v5.2.1)。

祝你好運!

1

我不會在您的授權請求中看到任何權限..基本權限不足以完成發佈。 我使用過:

https://www.facebook.com/dialog/permissions.request?app_id=MY_APP_ID&next=MY_APP_URL&display=page&response_type=code&canvas=1&perms=publish_stream,user_about_me,email 

這是在canvas應用程序的上下文中。其中MY_APP_URL是從應用程序的Facebook的網址: http://apps.facebook.com/MY_APP_NAME_OR_ID

參見事件擴展權限和documentation


[編輯]檢查活動的頁面 - 我回來了,對不起,現在我做了一個測試,事實上,它適用於我,但只有我在我的應用程序的牆上發佈;即使我提供了'user_events'權限,我也收到了以下錯誤:

遠程服務器在用戶牆上發帖時返回錯誤:(403)禁止。這就是說,我也訂閱這個問題。

相關問題