我正在使用google api v3.0
UserCredential uc = null;
UserCredential credential = null;
private void UserCredentials()
{
using (FileStream stream = new FileStream(@"C:\jason file\client_secrets.json", FileMode.Open, FileAccess.Read))
{
credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
GoogleClientSecrets.Load(stream).Secrets,
new[] { YouTubeService.Scope.Youtube, YouTubeService.Scope.YoutubeUpload },
"user",
CancellationToken.None,
new FileDataStore("YouTube.Auth.Store")).Result;
}
uc = credential;
}
然后
private void UserYoutubeService()
{
var youtubeService = new YouTubeService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = Assembly.GetExecutingAssembly().GetName().Name
});
}
我在我的表单构造函数中调用了这两个方法:
public Youtube_Uploader(string filetoupload)
{
InitializeComponent();
FileNameToUpload = @"C:\test.mp4";
service = AuthenticateOauth(apiKey);
var videoCatagories = service.VideoCategories.List("snippet");
videoCatagories.RegionCode = "IL";
var result = videoCatagories.Execute();
UserCredentials();
UserYoutubeService();
MakeRequest();
backgroundWorker1.RunWorkerAsync();
}
现在我遇到了一些问题。
在UserCredentials方法中,这个GoogleWebAuthorizationBroker将启动Chrome浏览器,但是我需要做一些检查它是否已经拥有凭据的内容,如果不这样做,请不要在我的程序上显示我我的表单,它有凭据,并显示凭据的名称。
如果凭据为空,请使用google youtube api的google youtube api屏幕制作GoogleWebAuthorizationBroker并启动Chrome,要求用户登录然后接受。
接受屏幕我的意思是屏幕说:这个应用程序想要.....取消接受
所以也许像GoogleWebAuthorizationBroker这样的东西不会自动触发chrome,但只有在有证书的情况下才会出现。
如果已经有凭据,那么还会给我当前的gmail帐户名称,然后在表单上显示我的帐户名称。
如果它是例如danny@gmail.com,那么请告诉我类似于:连接到:Danny
但如果我退出我的Gmail帐户,它会显示接受屏幕并登录屏幕登录gmail帐户。
如果用户登录,这就是我注销的方式:
private void button1_Click(object sender, EventArgs e)
{
Revoke();
}
然后:
public void Revoke()
{
if (uc!=null)
{
uc.RevokeTokenAsync(CancellationToken.None);
}
}