私はVisual Studio Team Services(VSTS)で私たちの作業項目に問い合わせるためのMVC5 Webアプリケーションを作成しています。認可ルーチンによって提供されたVSTS OAuth2ベアラートークンはどのように使用しますか?
チュートリアルthis oneとthis oneのようなチュートリアルを実行したところ、開発目的で作成した個人用アクセストークン(PAT)を使用して作業項目を取得できるようにアプリケーションを作成できました。私はまた、利用可能なサンプルhereを綿密に追跡することで、OAuth2プロセス全体を正常に作成し、ユーザーをVSTSに導き、自分のアプリケーションを承認するよう依頼してからコールバックページに戻しました。コールバックURLには、ユーザーのアクセストークン、更新トークンなどが正しく含まれています。ここまでは順調ですね。
アクセストークンの有効期限が切れた後にアプリケーションにアクセスしようとすると、そのトークンをリフレッシュすることを知っているので、ユーザの更新トークンを自分のユーザレコードのデータベースに保存します。
私の問題は、VSTSを照会するためのC#コードで自分のPATの代わりにユーザーのアクセストークンを使用する方法を理解できないことです。私が使用しているコードは以下の通りです(上でリンクしたGitHubのサンプルとほぼ同じです)。うまく動作しますが、PATを使用しているのがわかります。代わりに、ユーザーのアクセストークンを使用する方法はありますか?現時点では、APIによって返されたときにちょうどstring
として扱われています(おそらく間違っていますか?)。
public class GetFeatures
{
readonly string _uri;
readonly string _personalAccessToken;
readonly string _project;
public GetFeatures()
{
_uri = "https://myaccount.visualstudio.com";
_personalAccessToken = "abc123xyz456"; //Obviously I've redacted my actual PAT
_project = "My Project";
}
public List<VSTSFeatureModel> AllFeatures()
{
Uri uri = new Uri(_uri);
string personalAccessToken = _personalAccessToken;
string project = _project;
VssBasicCredential credentials = new VssBasicCredential("", _personalAccessToken);
//create a wiql object and build our query
Wiql wiql = new Wiql()
{
Query = "Select [State], [Title] " +
"From WorkItems " +
"Where [Work Item Type] = 'Feature' " +
"And [System.TeamProject] = '" + project + "' " +
"And [System.State] <> 'Removed' " +
"Order By [State] Asc, [Changed Date] Desc"
};
//create instance of work item tracking http client
using (WorkItemTrackingHttpClient workItemTrackingHttpClient = new WorkItemTrackingHttpClient(uri, credentials))
{
//execute the query to get the list of work items in the results
WorkItemQueryResult workItemQueryResult = workItemTrackingHttpClient.QueryByWiqlAsync(wiql).Result;
//some error handling
if (workItemQueryResult.WorkItems.Count() != 0)
{
//...do stuff
}
return null;
}
}
}
その場合、私は疑問に思いましたそのようなケースでしたが、クラスが必要とするパラメータを調べると、どの値を渡すべきかわからず、複雑すぎるように見えます。私はユーザーにアクセストークンを持っていますが、私がする必要があるのは、APIへの私の要求にこれを含めることです(「アクセストークンの使用」のセクションを参照してください):https://docs.microsoft.com/en- gb/vsts/integrate/get-started/authentication/oauthのように、.NETクライアントライブラリを使用する方法はありません)。 –