C#からGoogleサイトにファイルをアップロードする方法について何か考えはありますか?
アップロードしようとしていますが、403エラーが発生します。ただし、同じクレデンシャルを使用してサイトに接続し、サイトに存在する添付ファイルとページのリストを取得しています。
どんな助けでも大歓迎です!!
C#からGoogleサイトにファイルをアップロードする方法について何か考えはありますか?
アップロードしようとしていますが、403エラーが発生します。ただし、同じクレデンシャルを使用してサイトに接続し、サイトに存在する添付ファイルとページのリストを取得しています。
どんな助けでも大歓迎です!!
ほとんどの場合、ページやCookieに一時的な識別子を格納するアンチCSRFスキームがあります。これは、特にボットを妨害するためのものです。ほとんどの場合、適切なCSRFトークンなしでリクエストを送信し、拒否されます。彼らがCSRFをどのように処理するかを分析することをお勧めします。この時点以降、ページへのWebRequestを作成することになり、Cookieを取得できるようになります。また、フォームを使用して、非表示のフィールドを削除できるようにすることもできます。関連しています。次に、ファイルを送信しようとしている投稿リクエストにそれらを移動します。
私は問題を理解し、それを解決しました。以下は完全な機能です:
public bool UploadAttachment()
{
try
{
//AsyncSendData data = new AsyncSendData();
string parentUrl = Cabinets["Cabinet1"].ToString();
string parentID = parentUrl.Split('/')[7];
AtomEntry entry = new AtomEntry();
entry.Title.Text = "abc.jpg";
AtomCategory cat = new AtomCategory();
cat.Term = ATTACHMENT_TERM;
cat.Label = "attachment";
cat.Scheme = KIND_SCHEME;
entry.Categories.Add(cat);
AtomLink link = new AtomLink();
link.Rel = PARENT_REL;
link.HRef = parentUrl;
entry.Links.Add(link);
AtomContent content = new AtomContent();
FileInfo info = new FileInfo("C:\\Bluehills.txt");
FileStream stream = info.Open(FileMode.Open,FileAccess.ReadWrite,FileShare.ReadWrite);
this.setUserCredentials(userName, password);
Uri postUri = new Uri(makeFeedUri("content"));
entry.Source = new AtomSource();
//this.EntrySend(postUri, entry, GDataRequestType.Insert);
// Send the request and receive the response:
AtomEntry insertedEntry = this.Insert(postUri, stream, (string)DocumentTypes["TXT"], "bluehills");
return true;
}
catch (Exception ex)
{
return false;
}
}