gpt4 book ai didi

java - 访问 Youtube API

转载 作者:行者123 更新时间:2023-11-29 19:21:05 24 4
gpt4 key购买 nike

我想使用 Youtube API获取用户的订阅列表。它需要 oauth。

我读到实现谷歌登录将使访问此 API 变得更容易

我遵循了 Google 的文档,现在我可以正常登录了

I have these files now .

我的问题:

1)我需要使用哪个示例,IdTokenActivity.javaRestApiActivity.java

2) 如何使用示例代码访问 Youtube API?它没有说明并且文档令人困惑

最佳答案

  • 我需要使用哪个示例,IdTokenActivity.javaRestApiActivity.java

IdTokenActivity.java 旨在检索 id_tokenid_token 是一个 JWT token ,旨在发送到后端以将用户验证为真实(受信任的)Google 用户。您可以找到有关后端流程的更多信息 here .

RestApiActivity.java 用于使用您正在尝试执行的 Google API。

  • 如何使用示例代码访问 Youtube API?

步骤如下:

  1. 转到 Google Signin setup for Android ,下载 google-services.json 并将其放入您的 app 文件夹

  2. google developer console启用 Youtube 数据 API

  3. 将以下内容添加到应用 build.gradle 中:

    compile 'com.google.android.gms:play-services-auth:10.0.1'
    compile 'com.google.api-client:google-api-client-android:1.22.0' exclude module: 'httpclient'
    compile 'com.google.apis:google-api-services-youtube:v3-rev182-1.22.0'

使用 apply plugin: 'com.google.gms.google-services' 到文件底部

  1. 将以下内容更新到您的顶级 build.gradle :

    dependencies {
    classpath 'com.google.gms:google-services:3.0.0'
    }
  2. 在您的项目中包含 RestApiActivity.java 并更新以下内容:

    // Scope for reading user's contacts
    private static final String YOUTUBE_SCOPE = "https://www.googleapis.com/auth/youtube";

    ...

    // Configure sign-in to request the user's ID, email address, basic profile,
    // and readonly access to contacts.
    GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
    .requestScopes(new Scope(YOUTUBE_SCOPE))
    .requestEmail()
    .build();

当客户端通过身份验证时(在handleSignInResult),请求订阅列表如下:

/**
* AsyncTask that uses the credentials from Google Sign In to access Youtube subscription API.
*/
private class GetSubscriptionTask extends AsyncTask<Account, Void, List<Subscription>> {

@Override
protected void onPreExecute() {
showProgressDialog();
}

@Override
protected List<Subscription> doInBackground(Account... params) {
try {
GoogleAccountCredential credential = GoogleAccountCredential.usingOAuth2(
RestApiActivity.this,
Collections.singleton(YOUTUBE_SCOPE));
credential.setSelectedAccount(params[0]);

YouTube youtube = new YouTube.Builder(HTTP_TRANSPORT, JSON_FACTORY, credential)
.setApplicationName("Google Sign In Quickstart")
.build();

SubscriptionListResponse connectionsResponse = youtube
.subscriptions()
.list("snippet")
.setChannelId("UCfyuWgCPu5WneQwuLBWd7Pg")
.execute();

return connectionsResponse.getItems();
} catch (UserRecoverableAuthIOException userRecoverableException) {
Log.w(TAG, "getSubscription:recoverable exception", userRecoverableException);
startActivityForResult(userRecoverableException.getIntent(), RC_RECOVERABLE);
} catch (IOException e) {
Log.w(TAG, "getSubscription:exception", e);
}

return null;
}

@Override
protected void onPostExecute(List<Subscription> subscriptions) {
hideProgressDialog();

if (subscriptions != null) {
Log.d(TAG, "subscriptions : size=" + subscriptions.size());

// Get names of all connections
for (int i = 0; i < subscriptions.size(); i++) {
Log.v(TAG, "subscription : " + subscriptions.get(i).getId());
}
} else {
Log.d(TAG, "subscriptions: null");
mDetailTextView.setText("None");
}
}
}

代替 GetContacts 启动:

new GetSubscriptionTask().execute(mAccount);

你可以找到一个完整的例子here

关于java - 访问 Youtube API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42471003/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com