Access Youtube API



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

我读到,实现Google登录将使访问此API

更容易

我遵循了Google的文档,现在我获得了签名

我现在有这些文件。

我的问题:

1)我需要使用哪个样本,IdTokenActivity.javaRestApiActivity.java

2)如何使用示例代码访问YouTube API?它没有说,文档使

感到困惑
  • 我需要使用哪个样本,IdTokenActivity.javaRestApiActivity.java

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

RestApiActivity.java用于消耗Google API,这是您要做的。

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

这是一个步骤:

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

  2. 在Google开发人员控制台启用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);

您可以在此处找到一个完整的示例

相关内容

  • 没有找到相关文章

最新更新