我正在尝试在Android上使用带有OAuth 2.0身份验证的YouTubeData API,我正在努力解决这个问题.
我在网上搜索了很多,但对Android实现没什么帮助.
首先,我不清楚获得OAuth令牌的最佳方式是什么.在文档中,他们建议Android使用Google Play服务库获取它更好.真的吗?如果是,则按照本指南进行操作应该非常简单:https://developers.google.com/android/guides/http-auth.但此时我将在String对象中使用令牌..我应该如何在YouTubeData API中使用它?我应该把它放在某个地方YouTube.Builder吗?
YouTube youtube = new YouTube.Builder(Auth.HTTP_TRANSPORT, Auth.JSON_FACTORY, new HttpRequestInitializer() {
public void initialize(HttpRequest request) throws IOException {
}
}).setApplicationName("AppName").build();
Run Code Online (Sandbox Code Playgroud)
如果有,有谁知道在哪里?
在StackOverflow上搜索我遇到了这个问题:获取Auth Token后的操作 - Android Youtube API.Ibrahim Ulukaya说这里使用起来更好 GoogleAccountCredential.根据我的理解(访问Google API - GoogleAccountCredential.usingOAuth2与GoogleAuthUtil.getToken()),Android版本GoogleAccountCredential应该使用GoogleAuthUtilGoogle Play服务库提供的内容,因此简化流程非常有用.我看过Ibrahim Ulukaya建议的示例项目(https://github.com/youtube/yt-direct-lite-android),我已经像他一样实现了一切.但它似乎不能很好地工作,因为我只在logcat中获取此消息:"存在IO错误:com.google.android.gms.auth.UserRecoverableAuthException:NeedPermission:null".
(请注意,我已在Google控制台上启用了所有必需的API,并为我的应用创建了客户端ID)
在这一点上,我有点迷茫.
我应该直接使用GoogleAuthUtilGoogle Play服务库吗?在这种情况下,一旦获得令牌,String我如何将其与YouTubeData API一起使用?
或者我应该使用GoogleAccountCredential?在这种情况下,有人知道如何解决"NeedPersmission:null"错误?
----编辑:
关于我的应用程序尝试做什么的详细信息: 这是我第一次使用这种API的经历,我从简单的东西开始:检索视频信息,然后播放这些视频,无需任何用户身份验证.我设法很容易做到这一点,但为了我的应用程序的目的,我需要访问用户数据,特别是用户必须能够喜欢和评论视频.所以我开始实现OAuth2,尝试执行我之前所做的相同的查询(检索视频信息).
android youtube-api oauth-2.0 google-play-services youtube-data-api
我的应用程序的方法计数高于64k限制,所以我使用Proguard来减少它.
一切都适用于发布版本.
另一方面,调试版本仅适用于Lollipop +设备.在Lollipop之前的设备上启动时,我总是有臭名昭着的错误:
com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536
这是我在app level gradle文件中的内容:
buildTypes {
debug {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
release {
shrinkResources true
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
Run Code Online (Sandbox Code Playgroud)
我已经尝试minifyEnabled true在调试版本中删除,然后在Lollipop +上构建失败,因此proguard正在工作!但不是在棒棒糖前.
因为我知道minifyEnabled不应该依赖于平台,所以也许构建过程会在Lollipop之前的设备上跳过它(因为我不知道是什么原因).
有人知道这个问题的解决方案吗?
PS.我知道multidex的可能性,但我将它作为我的最后手段.
编辑:
这是app level gradle文件的完整代码:
apply plugin: 'com.android.application'
apply plugin: 'android-apt'
apply plugin: 'me.tatarka.retrolambda'
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'me.tatarka:gradle-retrolambda:3.2.5'
classpath 'com.getkeepsafe.dexcount:dexcount-gradle-plugin:0.5.5'
}
}
android {
compileSdkVersion 24
buildToolsVersion "23.0.3"
defaultConfig …Run Code Online (Sandbox Code Playgroud)