2011-10-03 3 views
0

다음 코드는 Picasa 웹 사이트에 업로드하려고 시도하고 있습니다. 무단 액세스 예외를 받고 업로드하려고 할 때. 나는 AuthToken을 얻는 방법을 모른다. 내 코드는 다음과 같습니다. 단서가 있으면 알려주세요.WP7에서 picasa로 사진을 업로드 할 때 승인되지 않은 액세스 예외가 발생했습니다.

public delegate void UploadPhotoCallback(bool success, string message); 


    public static void UploadPhoto(string albumId, string originalFileName, byte[] photo, UploadPhotoCallback callback) 
    { 
     string Username = "mailmugu"; 
     string AuthToken = ""; 

     try 
     { 
      var url = string.Format("http://picasaweb.google.com/data/feed/api/user/{0}/albumid/{1}", Username, albumId); 
      var request = WebRequest.Create(new Uri(url)) as HttpWebRequest; 
      //request.ContentType = HttpFormPost.ImageJpeg; 
      //request.Method = HttpMethods.Post; 

      request.ContentType = "image/jpeg"; 
      request.Method = "POST"; 
      request.Headers[HttpRequestHeader.Authorization] = "GoogleLogin auth=" + AuthToken; 

      request.BeginGetRequestStream(new AsyncCallback(UploadGetRequestCallback), 
              new UploadRequestState 
               { 
                Request = request, 
                Callback = callback, 
                Photo = photo, 
                FileName = originalFileName 
               }); 
     } 
     catch (Exception e) 
     { 
      Console.WriteLine(e); 
      //throw new MyException(MyResources.ErrorUploadingPhotoMessage, e); 
     } 
    } 

private static void UploadGetRequestCallback(IAsyncResult ar) 
    { 
     try 
     { 
      var state = (UploadRequestState)ar.AsyncState; 
      HttpWebRequest request = state.Request; 

      // End the operation 
      var stream = request.EndGetRequestStream(ar); 

      stream.Write(state.Photo, 0, state.Photo.Length); 
      stream.Close(); 

      request.BeginGetResponse(UploadGetResponseCallback, state); 
     } 
     catch (Exception e) 
     { 
      //throw new MyException(MyResources.ErrorUploadingPhotoMessage, e); 
     } 
    } 

    private static void UploadGetResponseCallback(IAsyncResult ar) 
    { 
     UploadRequestState state = null; 
     try 
     { 
      state = (UploadRequestState)ar.AsyncState; 
      HttpWebRequest request = state.Request; 

      // End the operation 
      HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(ar); 

      if (response != null) 
      { 
       response.Close(); 
      } 

      if (state.Callback != null) 
      { 
       MessageBox.Show("Uploaded Sucessfully"); 
       //state.Callback(true, MyResources.PhotosUploadedMessage); 
      } 
     } 
     catch (Exception e) 
     { 
      MessageBox.Show("Error" + e.Message); 
      Console.Write(e); 
      //if (state != null && state.Callback != null) 
      //state.Callback(false, MyResources.ErrorSavingImageMessage); 
     } 


    } 

    public class UploadRequestState 
    { 
     public HttpWebRequest Request { get; set; } 

     public UploadPhotoCallback Callback { get; set; } 

     public byte[] Photo { get; set; } 

     public string FileName { get; set; } 
    } 

    private void button1_Click(object sender, RoutedEventArgs e) 
    { 
     string albumId = "Picasa"; 
     string Filename = "Test"; 
     UploadRequestState _uploadReq = new UploadRequestState(); 
     Uri myuri = new Uri("/Images/Test.jpg", UriKind.RelativeOrAbsolute); 
     BitmapImage btmMap = new BitmapImage(myuri); 
     image1.Source=btmMap; 
     WriteableBitmap bmp = new WriteableBitmap(btmMap.PixelWidth,btmMap.PixelHeight); 
     MemoryStream ms = new MemoryStream(); 
     // write an image into the stream 
     Extensions.SaveJpeg(bmp, ms, 
      btmMap.PixelWidth, btmMap.PixelHeight, 0, 100); 
     byte[] Photo = ms.ToArray(); 
     UploadPhoto(albumId,Filename,Photo,_uploadReq.Callback); 
    } 
} 

}

답변

관련 문제