2016-05-17 5 views
1

C#経由でO365ビデオに保存されているサムネイル画像にアクセスしようとすると、奇妙な問題が発生しています。私は全く問題なくREST APIにアクセスできます。ちょうどAuthentication: Bearer <token>をヘッダーに追加するだけで、実行中です。問題は、特定の動画から戻ってくる基本的な画像のURLです。C#を使用してO365ビデオのサムネイル画像をダウンロードできません

https://<mytenant>.sharepoint.com/portals/Channel1/pVid/myvideo.mp4.PNG?VideoPreview=1 

ブラウザからそのURLにアクセスすると、そのURLは100%の時間で動作します。 httpclientオブジェクトからアクセスしようとすると、401 Unauthorizedエラーが発生します。

最高のことは、基本ヘッダーにアクセスするときに承認ヘッダートークンが使用されないことです。それで私はクッキーのようなものが必要なのですか?しかし、私はどれを理解するように見えることはできません。助言を探しています:)

答えて

1

代わりに認証情報を渡してください。はい、認証Cookieが必要です。ここではサンプルです:

private static async Task<string>getWebTitle(string webUrl) 
{ 
//Creating Password 
const string PWD = "softjam.1"; 
const string USER = "[email protected]"; 
const string RESTURL = "{0}/_api/web?$select=Title"; 

//Creating Credentials 
var passWord = new SecureString(); 
foreach (var c in PWD) passWord.AppendChar(c); 
var credential = new SharePointOnlineCredentials(USER, passWord); 

//Creating Handler to allows the client to use credentials and cookie 
using (var handler = new HttpClientHandler() { Credentials = credential }) 
{ 
    //Getting authentication cookies 
    Uri uri = new Uri(webUrl); 
    handler.CookieContainer.SetCookies(uri, credential.GetAuthenticationCookie(uri)); 

    //Invoking REST API 
    using (var client = new HttpClient(handler)) 
    { 
     client.DefaultRequestHeaders.Accept.Clear(); 
     client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); 

     HttpResponseMessage response = await client.GetAsync(string.Format(RESTURL, webUrl)).ConfigureAwait(false); 
     response.EnsureSuccessStatusCode(); 

     string jsonData = await response.Content.ReadAsStringAsync(); 

     return jsonData; 
    } 
} 

}

+1

ありがとう!しかし、O365 oAuthとFederationモデル(O365ログインページを使用しています)を使用しているため、資格情報がありません。私が必要と思うのは、OAuthトークンを取得してFedAuth Cookieに変換する方法です。 – Shawn

関連する問題