【问题标题】:Upload image from android phone to google photos album directly直接从安卓手机上传图片到谷歌相册
【发布时间】:2018-06-12 08:27:07
【问题描述】:

我一直在寻找一个用于谷歌照片的 API,它允许我在 android 中创建一个应用程序来将我的照片推送到云中的特定相册。到目前为止,我已经看到了两种可能的解决方案:

1) google drive api - 我昨晚实际上开发了一个 POC,并且大部分时间都在工作,但不幸的是我无法指定一个谷歌相册来发送我的图片。

2) 旧的 picasaweb api - 这个看起来更有前途,但我无法通过验证我的凭据。这是一篇描述如何设置的谷歌文章,但 PicasawebService 对象上的 setUserCredentials() 方法不再起作用 (https://developers.google.com/picasa-web/docs/3.0/developers_guide_java)

我想继续使用选项 2,但我在该 PicasawebService 对象上找不到允许我使用手机上已登录的用户帐户(通过 google 登录)进行后续调用的方法或 AccountPicker 意图)。我想也许 setUserToken() 方法会起作用,我尝试插入从上述两种登录方法收到的令牌。我在我的 OAuth2 范围“oauth2:profile email https://picasaweb.google.com/data/”中请求这个,它确实提示我并询问我是否想访问我的照片,我只是不知道如何将登录的用户帐户绑定到PicasawebService 调用。

如果我从登录到我的 google 帐户的浏览器中点击此 URL(此 URL 在我上面链接的文章中),我会看到我希望看到的所有内容:https://picasaweb.google.com/data/feed/api/user/username?kind=album 所以我知道api 仍然有效,我只是不知道如何在我的 android 应用程序中推送我的有效凭据。

任何建议将不胜感激 TIA

【问题讨论】:

    标签: java android oauth-2.0 picasa google-photos


    【解决方案1】:

    我没有亲自做过,但是看看这个人的回购。

    https://github.com/tedyk/google-photos-android

    希望这能让你继续前进。

    【讨论】:

    • 此解决方案适用于谷歌驱动器集成(请参阅我的 OP 中列出的 #1)。它很接近,但不幸的是,正如我所说,它不允许将照片直接放入相册,这是我最大的要求。
    • 哦,明白了,很抱歉,无法提供更多帮助。
    【解决方案2】:

    我曾在 2013 年至 2014 年的时候做过这项工作。但是关于关闭 picasa 网络的讨论太多了,所以我从未将它投入生产。并非所有代码都只是您要求的身份验证...祝您好运。

    // 获取难以捉摸的令牌

    if (TextUtils.isEmpty(token)) {
                    String SCOPE = "oauth2:http://picasaweb.google.com/data/";
                    try {
                        token = GoogleAuthUtil.getToken(context, email, SCOPE);
                    } catch (UserRecoverableAuthException e) {
                        token = "";
                    } catch (IOException e) {
                        token = "";
                    } catch (GoogleAuthException e) {
                        token = "";
                    }
                    if (TextUtils.isEmpty(token)) {
                        return null;
                    }
                }
    
    
    
    
    // send back to picasa
                String urls = "https://picasaweb.google.com/data/entry/api/user/"
                        + userId + "/albumid/" + albumId;
                URL url = new URL(urls);
                HttpURLConnection httpURLConnection = (HttpURLConnection) url
                        .openConnection();
                httpURLConnection.setRequestMethod("POST");
                httpURLConnection.setDoInput(true);
                httpURLConnection.setDoOutput(true);
                httpURLConnection.setUseCaches(false);
                // clientid may not be necessary is a crazy long string I think you get it from dashboard. it looks like blah.aps.googleusercontent.com
                httpURLConnection.setRequestProperty("X-GData-Client", CLIENT_ID);
                httpURLConnection.setRequestProperty("GData-Version", "2");
                httpURLConnection.setRequestProperty("Authorization", "OAuth "
                        + token);
    

    【讨论】:

    • 感谢您的回复。我确实在很久以前就让它工作了,只是忘了更新这个线程。我的帖子参数与您的有点不同,因为我的所有内容都包含在标题中。 connection.setRequestMethod("POST"); connection.setRequestProperty("Authorization","Bearer "+token); connection.setRequestProperty("Content-Type","image/jpeg"); connection.setRequestProperty("Slug",fileName);
    猜你喜欢
    • 2011-11-16
    • 2015-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多