![](/img/trans.png)
[英]Upload() request not working with Google Drive API in windows phone 8 C#
[英]Windows Phone - Google API gets cancelled [C#]
我正在使用Windows Phone 8应用程序,该应用程序使用Google.Apis nuget。 我在模拟器上调试它时遇到了问题(并非我的所有团队成员都可以访问设备)。 以下代码无限期地挂起:
await Task.Factory.StartNew(() =>
{
try
{
var result = GoogleWebAuthorizationBroker.AuthorizeAsync(
new ClientSecrets
{
ClientId = "<my_client_id>",
ClientSecret = "<my_client_secret>"
},
new[] {"https://mail.google.com/email"},
"<user_id_to_be_authorized>",
token).Result;
}
catch (Exception ex)
{
Debug.WriteLine(ex);
}
});
而且,如果我将.Result更改为.ContinueWith((x)=> {...}),它将始终引发AggregateException中包含的TaskCanceledException。 该代码可以在我的Lumia 920上正常工作。我缺少什么吗? 我检查了模拟器中的互联网连接,并且浏览器正常工作,我也进行了一些谷歌搜索,但没有结果。
尝试这个 :
private readonly ILogManager _logManager;
private readonly IStorageService _storageService;
private UserCredential _credential;
private Oauth2Service _authService;
private Userinfoplus _userinfoplus;
/// <summary>
/// Initializes a new instance of the <see cref="GoogleService" /> class.
/// </summary>
/// <param name="logManager">The log manager.</param>
/// <param name="storageService">The storage service.</param>
public GoogleService(ILogManager logManager, IStorageService storageService)
{
_logManager = logManager;
_storageService = storageService;
}
/// <summary>
/// The login async.
/// </summary>
/// <returns>
/// The <see cref="Task"/> object.
/// </returns>
public async Task<Session> LoginAsync()
{
Exception exception = null;
try
{
// Oauth2Service.Scope.UserinfoEmail
_credential = await GoogleWebAuthorizationBroker.AuthorizeAsync(new ClientSecrets
{
ClientId = Constants.GoogleClientId,
ClientSecret = Constants.GoogleClientSecret
}, new[] { Oauth2Service.Scope.UserinfoProfile }, "user", CancellationToken.None);
var session = new Session
{
AccessToken = _credential.Token.AccessToken,
Provider = Constants.GoogleProvider,
ExpireDate =
_credential.Token.ExpiresInSeconds != null
? new DateTime(_credential.Token.ExpiresInSeconds.Value)
: DateTime.Now.AddYears(1),
Id = string.Empty
};
return session;
}
catch (TaskCanceledException taskCanceledException)
{
throw new InvalidOperationException("Login canceled.", taskCanceledException);
}
catch (Exception ex)
{
exception = ex;
}
await _logManager.LogAsync(exception);
return null;
}
/// <summary>
/// Gets the user information.
/// </summary>
/// <returns>
/// The user info.
/// </returns>
public async Task<Userinfoplus> GetUserInfo()
{
_authService = new Oauth2Service(new BaseClientService.Initializer()
{
HttpClientInitializer = _credential,
ApplicationName = AppResources.ApplicationTitle,
});
_userinfoplus = await _authService.Userinfo.V2.Me.Get().ExecuteAsync();
return _userinfoplus;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.