Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 针对Android问题的YouTube数据API V3_Java_Android_Youtube - Fatal编程技术网

Java 针对Android问题的YouTube数据API V3

Java 针对Android问题的YouTube数据API V3,java,android,youtube,Java,Android,Youtube,我试着制作一个简单的Youtube工具来获取频道信息。我遵循了文档中的所有步骤(在谷歌云上创建密钥,从谷歌api java客户端创建libs,等等) 以下是我的代码片段: YouTube youtube = new YouTube.Builder(AndroidHttp.newCompatibleTransport(), new AndroidJsonFactory(), new HttpRequestInitializer() { public void initialize(

我试着制作一个简单的Youtube工具来获取频道信息。我遵循了文档中的所有步骤(在谷歌云上创建密钥,从谷歌api java客户端创建libs,等等)

以下是我的代码片段:

YouTube youtube = new YouTube.Builder(AndroidHttp.newCompatibleTransport(),
        new AndroidJsonFactory(), new HttpRequestInitializer() {
public void initialize(HttpRequest request)
        throws IOException {
}
        }).setApplicationName(getPackageName()).build();
Util.log(this, "Init ok");

YouTube.Channels.List list = youtube.channels().list(
        "snippet");
list.setKey(<my_key>);//api key removed for privacy
list.setForUsername("xdadevelopers");
list.setMaxResults(5l);
ChannelListResponse res = list.execute();
YouTube=new YouTube.Builder(AndroidHttp.newCompatibleTransport(), 新的AndroidJsonFactory(),新的HttpRequestInitializer(){ 公共无效初始化(HttpRequest请求) 抛出IOException{ } }).setApplicationName(getPackageName()).build(); Util.log(这是“Init ok”); YouTube.Channels.List List=YouTube.Channels().List( “片段”); list.setKey()//为保护隐私,已删除api密钥 list.setForUsername(“xdadevelopers”); 列表。setMaxResults(5l); ChannelListResponse res=list.execute(); 我得到了一个http状态代码403-访问未配置。我还启用HTTP传输调试日志记录。以下是我从Eclipse控制台获得的日志:

 D/HttpTransport(10317): -------------- REQUEST  --------------
 D/HttpTransport(10317): GET https://www.googleapis.com/youtube/v3/channels?forUsername=xdadevelopers&key=<my_key as in java source code>&maxResults=5&part=snippet
 D/HttpTransport(10317): Accept-Encoding: gzip
 D/HttpTransport(10317): User-Agent: myapp.packagename Google-HTTP-Java-Client/1.17.0-rc (gzip)
 D/HttpTransport(10317): curl -v --compressed -H 'Accept-Encoding: gzip' -H 'User-Agent: myapp.packagename Google-HTTP-Java-Client/1.17.0-rc (gzip)' -- 'https://www.googleapis.com/youtube/v3/channels?forUsername=xdadevelopers&key=<my_key>&maxResults=5&part=snippet'
 D/dalvikvm(10317): GC_FOR_ALLOC freed 38K, 1% free 65212K/65540K, paused 36ms, total 37ms
 I/dalvikvm-heap(10317): Grow heap (frag case) to 92.083MB for 29748112-byte allocation
 D/dalvikvm(10317): GC_FOR_ALLOC freed <1K, 1% free 94262K/94592K, paused 16ms, total 16ms
 D/dalvikvm(10317): GC_FOR_ALLOC freed 20K, 1% free 94243K/94592K, paused 14ms, total 14ms
 I/dalvikvm-heap(10317): Grow heap (frag case) to 120.433MB for 29748112-byte allocation
 D/dalvikvm(10317): GC_FOR_ALLOC freed 0K, 1% free 123294K/123644K, paused 17ms, total 17ms
 D/OpenGLRenderer(10317): Enabling debug mode 0
 D/HttpTransport(10317): -------------- RESPONSE --------------
 D/HttpTransport(10317): 403 Forbidden
 D/HttpTransport(10317): Alternate-Protocol: 443:quic
 D/HttpTransport(10317): Cache-Control: private, max-age=0
 D/HttpTransport(10317): Content-Encoding: gzip
 D/HttpTransport(10317): Content-Length: 138
 D/HttpTransport(10317): Content-Type: application/json; charset=UTF-8
 D/HttpTransport(10317): Date: Sat, 28 Dec 2013 05:01:43 GMT
 D/HttpTransport(10317): Expires: Sat, 28 Dec 2013 05:01:43 GMT
 D/HttpTransport(10317): Server: GSE
 D/HttpTransport(10317): X-Android-Received-Millis: 1388206907784
 D/HttpTransport(10317): X-Android-Response-Source: NETWORK 403
 D/HttpTransport(10317): X-Android-Selected-Transport: http/1.1
 D/HttpTransport(10317): X-Android-Sent-Millis: 1388206907245
 D/HttpTransport(10317): X-Content-Type-Options: nosniff
 D/HttpTransport(10317): X-Frame-Options: SAMEORIGIN
 D/HttpTransport(10317): X-XSS-Protection: 1; mode=block
 D/HttpTransport(10317): Total: 205 bytes
 D/HttpTransport(10317): {
 D/HttpTransport(10317):  "error": {
 D/HttpTransport(10317):   "errors": [
 D/HttpTransport(10317):    {
 D/HttpTransport(10317):     "domain": "usageLimits",
 D/HttpTransport(10317):     "reason": "accessNotConfigured",
 D/HttpTransport(10317):     "message": "Access Not Configured"
 D/HttpTransport(10317):    }
 D/HttpTransport(10317):   ],
 D/HttpTransport(10317):   "code": 403,
 D/HttpTransport(10317):   "message": "Access Not Configured"
 D/HttpTransport(10317):  }
 D/HttpTransport(10317): }
D/HttpTransport(10317):------------请求--------------
D/HttpTransport(10317):获取https://www.googleapis.com/youtube/v3/channels?forUsername=xdadevelopers&key=&maxResults=5&part=snippet
D/HttpTransport(10317):接受编码:gzip
D/HttpTransport(10317):用户代理:myapp.packagename谷歌HTTP Java客户端/1.17.0-rc(gzip)
D/HttpTransport(10317):curl-v--compressed-H'接受编码:gzip'-H'用户代理:myapp.packagename谷歌HTTP Java客户端/1.17.0-rc(gzip)'--'https://www.googleapis.com/youtube/v3/channels?forUsername=xdadevelopers&key=&maxResults=5&part=snippet'
D/dalvikvm(10317):释放38K的总成本,释放65212K/65540K的1%,暂停36毫秒,总计37毫秒
I/dalvikvm堆(10317):对于29748112字节分配,将堆(frag情况)增长到92.083MB

D/dalvikvm(10317):GC_FOR_ALLOC freed我做了你做的所有步骤以及我能找到的所有东西,SHA-1指纹,等等。在使用Android应用程序API密钥时,我得到了相同的错误。我所做的是在谷歌云上创建一个新的应用程序,并使用浏览器API键而不是Android应用程序键。

它可以工作。然而,使用API似乎是一种棘手的方法。此外,如果你发布你的应用程序,有人可以解码该应用程序以获取你的API密钥,他们可以窃取你的配额。你看到关于这个的任何文档了吗?我找不到任何关于如何正确使用Android应用程序的文档。我猜它不起作用,因为服务器如何知道SHA-1指纹?我们肯定少了一步。有人窃取你的密钥的危险与其他许多API一样,有加密的方法,这是另外一个故事。如果你知道如何使Android应用程序密钥工作,请让我们都知道。