【问题标题】:android - upload videos to fixed YouTube account without using Google OAuth 2.0android - 不使用 Google OAuth 2.0 将视频上传到固定的 YouTube 帐户
【发布时间】:2015-01-10 06:17:06
【问题描述】:

我会保持简单。我的要求是在我的 android 应用程序中使用 OAuth2 对静态 Google 帐户(使用用户名和密码)进行身份验证。然后在获得 oauth 令牌后,我会将一些视频上传到 YouTube。所有其他工作都是上传完成的。但目前我正在使用 GoogleAuthUtil 从 android System 中选择一个帐户。就像这里给出的 (http://developer.android.com/google/auth/http-auth.html)

现在我想禁用此功能。我只想将所有视频上传到固定的 youtube/Google 帐户。我也经历了this 的问题,但也没有答案。

我还发现了this 问题,它非常有帮助,但the tutorial 它正在使用已弃用的 GoogleClientLogin,并且当我尝试使用 GoogleClientLogin 时它会抛出异常 403 禁止。然后我尝试使用 OAuth2 url,它总是要求第一次登录。所以无论如何都可以在没有任何用户参与的情况下验证谷歌帐户并获取 OAuth 令牌。请帮帮我。

谢谢

【问题讨论】:

    标签: android google-oauth youtube-data-api


    【解决方案1】:

    How do I authorise an app (web or installed) without user intervention? (canonical ?)

    该答案涉及服务器应用程序,但 Android 应用程序的行为方式相同。因此,您可以将刷新令牌嵌入到您的应用中,或者下载并存储它,然后在您的应用需要访问 YouTube 时使用它来生成访问令牌。

    【讨论】:

    • 它没有帮助:(。oauth 2 Playground 是一个用于身份验证的应用程序。请阅读我的要求。我只想要一些可以验证 google id 和密码并给我 oauth 的东西令牌
    • 这是正确答案 - 我知道,因为我已经做到了。如果您认为不是,那么您需要更加努力地理解 OAuth。特别注意第 7 步,您在其中提供自己应用的凭据。
    • 好的。谢谢,我会更加努力。我已经花了 2 天时间了 :(
    【解决方案2】:

    我终于找到了解决问题的方法。现在,我可以从我的 Android 应用程序将视频上​​传到静态 YouTube 帐户。虽然 Youtube Data api v2 已被弃用,但我将其用于我的要求。 我使用以下代码将视频上传到 YouTube

        YouTubeService service = new YouTubeService("project id on console.developer.google.com","androidkey");
        service.setUserCredentials("yourYouTubeAccount@gmail.com", "yourPassword");
        VideoEntry newEntry = new VideoEntry();
        YouTubeMediaGroup mg = newEntry.getOrCreateMediaGroup();
        mg.setTitle(new MediaTitle());
        mg.getTitle().setPlainTextContent("Video Title");
        mg.addCategory(new MediaCategory(YouTubeNamespace.CATEGORY_SCHEME, "Tech"));
        mg.setKeywords(new MediaKeywords());
        mg.getKeywords().addKeyword("anyKeyword");
        mg.setDescription(new MediaDescription());
        mg.getDescription().setPlainTextContent("VIDEO DESCRIPTION");
        mg.setPrivate(false);
        mg.addCategory(new MediaCategory(YouTubeNamespace.DEVELOPER_TAG_SCHEME, "mydevtag"));
        mg.addCategory(new MediaCategory(YouTubeNamespace.DEVELOPER_TAG_SCHEME, "anotherdevtag"));
        MediaFileSource ms = new MediaFileSource(videoFileToUpload, "video/quicktime");
        newEntry.setMediaSource(ms);
        VideoEntry createdEntry = service.insert(new URL(Constant.YOUTUBE_UPLOAD_URL), newEntry);
        Log.v("TAG", "VIDEO INSERTED ID : " + createdEntry.getId());
    

    您需要以下库才能使用该代码:

    • activation.jar
    • additionnal.jar
    • gdata-base-1.0.jar
    • gdata-core-1.0.jar
    • gdata-media-1.0.jar
    • gdata-youtube-2.0.jar
    • gdata-youtube-meta-2.0.jar
    • guava-11.0.2.jar
    • mail.jar
    • servlet-api.jar

    对于 gdata 库,请转到 this 链接并下载 gdata-src.java-x.xx.x.zip 和 gdata-samples.java-x.x.x.zip。提取这些文件夹,您将获得所需的 jars

    -谢谢

    【讨论】:

    • 我已经下载了gdata-youtube-2.0.jar,但是我仍然无法使用YouTubeService类的setUserCredentials方法。我做错了什么或错过了什么吗?我导入的包是 com.google.gdata.client.youtube.YouTubeService
    • 上述问题通过使用-compile group: 'com.google.gdata', name: 'core', version: '1.47.1'依赖修复
    • 顺便说一句,Constant.YOUTUBE_UPLOAD_URL 的值应该是多少?
    • 我和@NarendraJi 有同样的问题。你找到了吗? Constant.YOUTUBE_UPLOAD_URL 的值是多少?常量应该是常量吗?
    猜你喜欢
    • 2013-06-22
    • 2021-07-29
    • 1970-01-01
    • 1970-01-01
    • 2012-09-25
    • 2014-04-29
    • 2014-06-23
    • 2012-05-21
    • 2016-08-22
    相关资源
    最近更新 更多