2012-10-10 2 views
0

나는 이것으로 머리를 부수고 발견 할 수있는 모든 문서를 읽었지만 여전히 해결책을 찾을 수 없으므로 여기에 게시하고 있습니다.ASP.NET에서 페이스 북에 사진 업로드하기 Facebook 앱

먼저 Graph API를 통해 사진을 게시하는 공식 Facebook 가이드를 시작했습니다. 이 PHP에서 이래로

https://developers.facebook.com/blog/post/498/

, 나는 ASP.NET C#으로 그것을 다시 썼다. 이 코드는 사진이 성공적으로 업로드되었다는 점에서 작동하며 사진 ID가있는 JSON 응답을 받았습니다.

이 ID를 다시 읽는 방법이 필요하므로 서버 측에서 업로드를해야한다고 생각합니다. 그러나 이것은 사용자가 내 서버에 먼저 업로드해야한다는 것을 의미하며 내 코드는이를 Facebook의 API로 전송합니다.

제 질문은 : 먼저 서버의 디스크에 파일을 저장하지 않고이 작업을 수행 할 수 있습니까? 이 시점에서 업로드 된 파일의 데이터 버퍼를 가지고 있기 때문에 어떻게 든 그래프 API로 보낼 수 있습니까? 처음에는 파일을 저장 한 다음 다시 업로드하는 것이 다소 중복 된 것으로 나타났습니다.

Javascript/AJAX를 사용하여이 방법을 생각했지만 방법이없는 것으로 보입니다. Facebook의 Javascript API는이를 제공하지 않습니다.

또한 다양한 라이브러리 such as this을 보려고했지만 설명서가 부족합니다. 나는 또한 this article을 보았지만 이미 업로드 할 파일이 있다고 가정합니다.

전문가가 여기에서 (가능한 경우) 샘플 코드를 게시하거나 필자에게 필요한 방향을 정확하게 알려줄 수 있습니까? 우리가이 작업을 수행하는 동안 Facebook의 사진 업로드 대화 상자를 실행하는 방법이 있습니까? 아니면 처음부터 직접 빌드해야합니까?

미리 감사.

답변

0

좋아, 주위를 어지러운 후에 나는 해결책을 찾았다 고 생각합니다. 영문에서

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="upload.aspx.cs" Inherits="photocontest_upload" %> 
<!DOCTYPE HTML> 
<html lang="en"> 
<head runat="server"> 
    <title></title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 
     File: <asp:FileUpload ID="fileUpload" runat="server" /><br /> 
     Caption: <asp:TextBox ID="caption" runat="server"></asp:TextBox><br /> 
     <asp:Button id="btnSubmit" runat="server" onclick="btnSubmit_Click" text="Upload" /> 
    </div> 
    </form> 
    <asp:Literal ID="msg" runat="server"></asp:Literal> 
</body> 
</html> 
아직이 나타납니다

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.IO; 
using Facebook; 

public partial class photocontest_upload : System.Web.UI.Page 
{ 
    protected string access_token = ""; 
    protected string form_url = ""; 

    protected void Page_Load(object sender, EventArgs e) 
    { 
     string app_id = "your_app_id"; 
     string app_secret = "your_app_secret"; 
     string post_login_url = "your_post_login_url"; 

     string code = Request["code"] ?? ""; 

     if (code == "") 
     { 
      string dialog_url = "http://www.facebook.com/dialog/oauth?" + "client_id=" + app_id + "&redirect_uri=" + Server.UrlEncode(post_login_url) + "&scope=publish_stream"; 
      Response.Redirect(dialog_url); 
     } 
     else 
     { 
      string token_url = "https://graph.facebook.com/oauth/access_token?client_id=" + app_id + "&redirect_uri=" + Server.UrlEncode(post_login_url) + "&client_secret=" + app_secret + "&code=" + code; 
      string response = InstaSharp.HttpClient.GET(token_url); 
      access_token = HttpUtility.ParseQueryString(response).Get("access_token"); 
      form_url = "https://graph.facebook.com/me/photos?access_token=" + access_token; 
     } 
    } 
    protected void btnSubmit_Click(object sender, EventArgs e) 
    { 
     if (fileUpload.HasFile) 
     { 
      FacebookClient facebookClient = new FacebookClient(access_token); 
      FacebookMediaObject mediaObject = new FacebookMediaObject 
      { 
       FileName = "file.jpg", 
       ContentType = "image/jpeg" 
      }; 

      mediaObject.SetValue(fileUpload.FileBytes); 

      IDictionary<string, object> upload = new Dictionary<string, object>(); 
      upload.Add("name", caption.Text); 
      upload.Add("@file.jpg", mediaObject); 

      dynamic res = facebookClient.Post("/me/photos", upload) as JsonObject; 
      form1.Visible = false; 

      msg.Text = "<p>Photo uploaded successfully. " + 
       "<a href=\"https://www.facebook.com/photo.php?fbid=" + res.id + "\">View on facebook</a><p>" + 
       "<p><a href=\"upload.aspx\">Back</a>"; 
     } 

    } 
} 

을 처리

Codebehind가 (인증 부분은 페이스 북이 제공 한 샘플 PHP 코드로 변환되었다.) 어떤 오류가 작동하지하지만 여전히 나는 돈합니다 FacebookMediaObject와 facebookClient() 매개 변수가 무엇인지에 대한 자세한 내용을 알고 있습니다. 누구든지 페이스 북 C# SDK의 전체 설명서를 어디에서 얻을 수 있는지 알고 있습니까? 감사!

관련 문제