YouTube API请求:我如何获得正确的令牌(关于Jim S。'代码)

时间:2011-12-06 12:16:54

标签: php api codeigniter oauth youtube

我正在尝试在我的codeIgniter网站上实施YouTube API。 我跟着Jim Saunders instructions在这里:

在这里:http://codeigniter.com/wiki/OAuth_for_Google/ (大致相同)

首先,我需要使用request_youtube函数获取令牌秘密,该功能正常工作,我已经从谷歌输入了我的消费者密钥和消费者秘密,一切都很好。因此,我被重定向到YouTube以授权访问YouTube,但当我被重定向到我的网站时,我遇到了两个问题:

我得到的网址是:

mywebsite/example/access_youtube=&oauth_verifier=6wbPcxlOAmYQwaDU7HIhz38B&oauth_token=1/6Nfchy_nM-j4vxQzhAWTuc1J20L02bBNdcZasQP-e0s

codeIgniter不理解“/”并且不会将我重定向到example/access_youtube函数,如果我手动更正,那么我会转到我的access_youtube函数与我的参数,但这是我得到的第二个(致命)问题:

首先,这是我从网址获得的两个变量:

oauth_verifier=6wbPcxlOA************
&
oauth_token=1/6Nfchy_nM-j4vxQzhAWTuc1J20L02b***********

然而,在谷歌Oauth Playground(你可以在这里找到:http://googlecodesamples.com/oauth_playground/) 我应该得到类似的东西:

oauth_token=1/P9o-yO1Czz1q67pvPm**********************iMI&
oauth_token_secret=CzeSat342hO5HzswJEq94ZPH&oauth_callback_confirmed=true

这意味着我没有得到相同的变量......为什么?我怎么能得到变量而不是我得到的变量?它们是一样的吗?

其次, 我在access_Youtube函数中遇到了几个错误,CI告诉:

  • - 消息:未定义的索引:oauth_token
  • - 消息:未定义的索引:oauth_token_secret

所以它没有从标题中获取信息...我真的不知道该怎么做,我已经跟着吉姆'说明但是我有点卡在那里,是否有人试图在他的网站上实施OAuth访问有一个想法吗?

谢谢你:)

1 个答案:

答案 0 :(得分:1)

好的,在你从谷歌重定向回来之前你做的事情是完全正确的。

  1. oauth_verifier
  2. 组oauth_token
  3. 如果用户授权您的应用访问他/她的个人资料,那么

    oauth_verifier代码是google发回给您的,因此您需要此验证程序来获取具有访问令牌的AccessToken,您将能够访问用户个人资料/日期。您定义的范围。

    oauth_token 
    

    这与您的应用程序相关联,而Google会识别您的应用程序

    所以,当您通过调用类似

    的内容从google / you tube API获取AccessToken
    Token token=authGetRequestToken.getRequestToken(service);
    

    此请求令牌包含您的秘密,因此在将用户重定向到youtube之前,您需要将此令牌持久保存到数据库或会话。一旦用户重定向回您的应用程序,您需要在使用此令牌后取回此令牌verify_code和此令牌一起获取Access_token,如

    Token accessToken = authGetAccessToken.getAccessToken((Token)   
     session.get(OAuthConstants.REQUEST_TOKEN), verifier);
    

    一旦你拥有了accessToken,你就会很高兴

    希望它有意义

    <强> EDIT1

    OAuth系统正在发送Verification_code,以指示用户已授予访问权限并已自行授权。这只是握手机制的一部分。

    我浏览了OP在这里提到的那个页面

    $response = $this->google_oauth->get_request_token(site_url("/user/youtube_access"));
    $this->_store_somewhere($response['token_secret']);
    

    因此要求将token_secret存储在某个地方,您可以选择数据库或会话,因为此token_secret将在稍后阶段再次重建请求

    在我的代码示例中,我保存了整个Request_Token,其中包含token_secretoauth_token

    将用户重定向回您的应用程序后,您需要执行以下步骤

    $token_secret = $this->_get_from_storage('token_secret');
     $oauth = $this->google_oauth->get_access_token(false, $token_secret);
    

    我们在这里检索我们在上一步保存的token_secret,而不是发送要求Google提供access_token

    我也做了几乎同样的事情,通过验证者和token_secret

    希望它清楚