当前位置: 首页 > 知识库问答 >
问题:

YouTube API v2.0-OAuth 2.0授权

秦博延
2023-03-14

我正在尝试使用Oauth和yt API。我想试试youtube的基于浏览器的上传。但首先,我必须让用户能够允许程序访问我的页面。https://developers.google.com/youtube/2.0/developers_guide_protocol_browser_based_uploading#Browser_based_uploading

但首先我需要获取一个ACCESS_TOKEN,这就是为什么我需要一个OAuth 2.0访问令牌。但是由于某种原因,我无法得到它。我做错了什么?

所以首先我去reddir.php,点击链接,这样我就被重定向到允许程序使用我的yt帐户。

==

POST /o/oauth2/tokenHTTP/1.1主机:accounts.google.comContent-Type:Application/x-www-form-urlencoded

代码=4/ux 5 gN j-_mIu4DOD_gNZdjX9EtOFf

=

<?php   
    $Access_token   =   'https://accounts.google.com/o/oauth2/auth?
                        client_id=xxxxxxxxxxxx.apps.googleusercontent.com&  
                        redirect_uri=http://sdesigns.be/UNSharp/obtain_token.php&
                        scope=https://gdata.youtube.com&
                        response_type=code&
                        access_type=offline';               

    echo '<a href="' . $Access_token . '">Click here to obtain a token2</a>';
?> 

=

<?php
           //this file is  
    $client_id = 'xxxxxxxxxxxx.apps.googleusercontent.com';
    $client_secret = 'xxxxxxxxxxxxxxxxxxxxxxxxx';
    $redirect_uri = 'http://sdesigns.be/UNSharp/obtain_token.php';

    $author_code = $_GET["code"];

    echo 'Author code: <br>' .$author_code . '<br>';



    $oauth2token_url = "https://accounts.google.com/o/oauth2/token";
    $clienttoken_post = array(
                            "code" => $code,
                            "client_id" => $client_id,
                            "client_secret" => $client_secret,
                            "redirect_uri" => $redirect_uri,
                            "grant_type" => "authorization_code"
                        );

    $curl = curl_init($oauth2token_url);
    curl_setopt($curl, CURLOPT_POST, true);
    curl_setopt($curl, CURLOPT_POSTFIELDS, $clienttoken_post);
    curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

    $json_response = curl_exec($curl);

    echo 'RESULT code: <br>' ;
    var_dump($json_response);
    echo '<br>';    

    curl_close($curl);                                          
 ?>

共有1个答案

琴元凯
2023-03-14

您的< code>$body2字符串可能有一些编码问题,因为< code>curl_setopt()需要一个urlencoded字符串。

只需以键值对的形式提供参数,如本例中所做的那样,这样您就不必关心urlencoding字符串了:

$oauth2token_url = "https://accounts.google.com/o/oauth2/token";
$clienttoken_post = array(
"code" => $code,
"client_id" => $client_id,
"client_secret" => $client_secret,
"redirect_uri" => $redirect_uri,
"grant_type" => "authorization_code"
);

$curl = curl_init($oauth2token_url);

curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $clienttoken_post);
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

$json_response = curl_exec($curl);
curl_close($curl);
 类似资料:
  • 我们必须在我的客户项目中集成OAuth2.0授权代码授予。目前,该应用程序使用本地登录页面。我们需要删除该页面,并将未登录的用户重定向到AS登录页面,。在AS end成功登录后,我们将被重定向到配置的。此时,我的客户端应用程序将如何知道用户已在AS登录?如何在客户端维护会话?另外,我需要用和访问令牌交换auth代码,并将其用于后续的服务器API调用。那么如何实现这一点并将令牌作为标头发送呢? 应用

  • 目标:Java授权服务器: OAuth2.0授权代码授予细粒度权限流(不仅仅是SSO服务器) 用户管理和身份验证:自定义数据库 客户端管理和身份验证:KeyCloak 在开发中应该使用什么Keycloak适配器/API? 如果用户要出现在Keycloak中,应该如何管理/显示它们? 我是Keycloak的初学者,虽然我认为我理解主要原理,但它似乎是一个丰富的工具,我担心我可能仍然在使用它的最佳方法

  • 我试图使用以下所需信息从API生成访问令牌: 授权endpoint:https://api.paylocity.com/identityserver/connect/token 其他值请求必须在请求正文中发布以下表单编码值: grant_type=client_credentials范围=WebLinkAPI 我尝试使用Python'requests'包,但没有成功,请参见下面: 我已经验证了我的

  • 我的问题是:为什么这是流动?我想是出于安全原因,但我想不通。为什么实现是这样的,而不是在第一次调用(“/authorize”)之后立即获得访问令牌? 我们为什么需要这个代码?

  • OAuth 2.0 OAuth 2.0(Open Anthentication) 是一个 开放标准授权, 它授予客户端应用程序安全授权访问受保护的服务器资源代表资源所有者(用户).Oauth2.0 还定义了资源拥有者授权的第三方访问其服务器资源过程,不予它们共享证书. StrongLoop API网关附带实现的OAuth 2.0协议,并提供元数据的持久性和管理一个OAuth 2.0提供者。 下图提

  • 但是,在谈到安全性时,尝试为api网关实现oauth。但是现在我在Spring1.x版本中用来获取访问令牌的'oauth/token'endpoint在SpringBoot2中无法工作。 当我在谷歌搜索时,spring Boot2对spring security 5进行了一些更改,使其默认加密和解密 客户端ID 客户端-机密 用户密码 {“时间戳”:“2018-06-28T17:31:07.181

  • 使用oAuth 2.0,在“授权代码”授权授予中,我首先调用“/授权”,获取代码,然后在对“/令牌”的调用中使用该代码来获取访问令牌。 我的问题:为什么这是流?我想这是出于安全原因,但我想不出来。为什么实现是这样的,而不是在第一次调用(“/authorize”)后立即获取访问令牌? 为什么我们需要这个代码?

  • 基于JFinal3.x,jfinal-ext3 , japp-lanucher, dubbo, 参考RFC6749实现了4.节描述的内容。 实现了OAuth 2.0定义了四种授权方式 授权码模式(authorization code): 先获取下次请求token的code,然后在带着code去请求token; 简化模式(implicit):直接请求token; 密码模式(resource owne