我正在尝试在我的 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访问他的网站有什么想法?
谢谢你 :)
最佳答案
好的,直到你从谷歌重定向回来之前你正在做的事情是完全正确的。
oauth_verifier
如果用户授权您的应用程序访问他/她的个人资料,则代码是谷歌发回给您的一个,因此您需要此验证程序来获取带有访问 token 的 AccessToken 您将能够访问您定义的任何范围的用户个人资料/日期。oauth_token
这与您的应用程序相关联,Google 会以此识别您的身份,您的应用程序将保持不变
所以当你得到
AccessToken
通过调用类似的东西从 google/you tube APIToken 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_secret
和 oauth_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/