php - YouTube API 请求 : How could I get the Right token ( about Jim S. ' 代码 )

标签 php api codeigniter oauth youtube

我正在尝试在我的 codeIgniter 网站上实现 YouTube API。
我关注了Jim Saunders instructions这里 :

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

所以首先,我需要使用 request_youtube 获取 token secret 。功能,该功能正常工作,我已经从谷歌输入了我的消费者 key 和消费者密码,一切都很好。然后我被重定向到 YouTube 以授权 YouTube 访问,但是当我被重定向到我的网站时,我遇到了 2 个问题:

我得到的网址是:
mywebsite/example/access_youtube=&oauth_verifier=6wbPcxlOAmYQwaDU7HIhz38B&oauth_token=1/6Nfchy_nM-j4vxQzhAWTuc1J20L02bBNdcZasQP-e0s
codeIgniter不明白“/”并且不会将我重定向到 example/access_youtube功能,如果我手动更正它,那么我去我的access_youtube使用我的参数运行,但这是我遇到的第二个(致命)问题:

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

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

然而,在 google 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访问他的网站有什么想法?

    谢谢你 :)

    最佳答案

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

  • oauth_verifier
  • oauth_token
  • oauth_verifier如果用户授权您的应用程序访问他/她的个人资料,则代码是谷歌发回给您的一个,因此您需要此验证程序来获取带有访问 token 的 AccessToken 您将能够访问您定义的任何范围的用户个人资料/日期。
    oauth_token 
    

    这与您的应用程序相关联,Google 会以此识别您的身份,您的应用程序将保持不变

    所以当你得到 AccessToken通过调用类似的东西从 google/you tube API
    Token token=authGetRequestToken.getRequestToken(service);
    

    此请求 token 包含您的 secret ,因此在将用户重定向到 youtube 之前,您需要将此 token 持久保存到数据库或 session 。一旦用户重定向回您的应用程序,您需要在获得此 token 后取回此 token ,同时使用验证码使用此 token 获得 Access_token 之类的
    Token accessToken = authGetAccessToken.getAccessToken((Token)   
     session.get(OAuthConstants.REQUEST_TOKEN), verifier);
    

    一旦你有了这个accessToken你很高兴去

    希望有意义

    编辑1

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

    我浏览了OP在这里提到的页面是那里提到的
    $response = $this->google_oauth->get_request_token(site_url("/user/youtube_access"));
    $this->_store_somewhere($response['token_secret']);
    

    所以它被要求存储token_secret在某些地方,您可以选择 DB 或 session 任何您选择的方式,如 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 一起传递验证器的几乎相同的事情

    希望它对你清楚

    关于php - YouTube API 请求 : How could I get the Right token ( about Jim S. ' 代码 ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8399738/

    相关文章:

    php - 智能引号无法正确转换为 UTF8

    javascript - 如何仅使用 1 个移动应用程序连接 Api 的特定 URL

    macos - 在哪里可以找到有关 Skype 桌面 API 的文档?

    api - 使用 Postman 和 Jetpack 测试 API 速率限制

    .htaccess - 在所有流量和所有页面上强制使用 HTTPS

    php - 未定义的命名空间前缀

    php - Joomla 3.4.4 多语言 url

    php - 即时创建数据库备份

    php - 创建 CSV 文件时,如何处理字段中的\n 和\r 字符?

    php - 如何从 Codeigniter 中的 URL 中删除 "&per_page="