Picasa ClientLogin弃用问题

时间:2015-05-29 15:47:16

标签: c# oauth-2.0 picasa

我一直在使用picasa客户端登录几年没有问题。我们使用它来存储用户上传的照片,因此我们不想要求用户身份验证,因为我们只是将照片存储在我们自己的帐户中。它是在.NET中开发的。

到目前为止,它一直有效,我无法解决(并开始徘徊,现在是否可能)如何解决问题。

上一个代码:

PicasaService service = new PicasaService("My App");
service.setUserCredentials("myemail@gmail.com", "password");

Uri postUri = new Uri(PicasaQuery.CreatePicasaUri("default", AlbumID));
string sContentType = "image/jpeg";

PicasaEntry entry = (PicasaEntry)service.Insert(postUri, fileStream, sContentType, sFilename);

fileStream.Close();

sPicasaURL = entry.Media.Content.Url.ToString();

使用Auth2的新代码(不起作用!) - 我已经进入开发者控制台并设置了客户端ID。我在我的应用程序中使用P12键来获取访问代码。

Uri postUri = new Uri(PicasaQuery.CreatePicasaUri("default", AlbumID));

const string ServiceAccountEmail = "email@developer.gserviceaccount.com";

var certificate = new X509Certificate2(HttpContext.Current.Server.MapPath("bin/key2.p12"), "notasecret", X509KeyStorageFlags.Exportable);

var serviceAccountCredentialInitializer = new ServiceAccountCredential.Initializer(ServiceAccountEmail)
{
  Scopes = new[] { "https://picasaweb.google.com/data/" }
}.FromCertificate(certificate);

var credential = new ServiceAccountCredential(serviceAccountCredentialInitializer);

if(!credential.RequestAccessTokenAsync(System.Threading.CancellationToken.None).Result)
                throw new InvalidOperationException("Access token request failed.");

var requestFactory = new GDataRequestFactory(null);
            requestFactory.CustomHeaders.Add("Authorization: Bearer " + credential.Token.AccessToken);

PicasaService service = new PicasaService("My App");
            service.RequestFactory = requestFactory;

string sContentType = "image/jpeg";

PicasaEntry entry = (PicasaEntry)service.Insert(postUri, fileStream, sContentType, sFilename);

fileStream.Close();

sPicasaURL = entry.Media.Content.Url.ToString();

有人可以帮忙吗?

我得到:

“远程服务器返回错误:(404)Not Found。”错误。
{“执行请求失败:https://picasaweb.google.com/data/feed/api/user/default/albumid/myalbumid”}

即使现在可以使用clientlogin这种类型的登录吗?

提前致谢!

2 个答案:

答案 0 :(得分:0)

您需要检查2天前谷歌启用的新OAuth2身份验证协议。

不推荐使用ClientLogin API,不再使用...

我目前正在努力解决同样的问题,并将很快发布我的示例Java代码。

干杯, 小物件

答案 1 :(得分:-1)