我正在尝试在我的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访问有一个想法吗?
谢谢你:)
答案 0 :(得分:1)
好的,在你从谷歌重定向回来之前你做的事情是完全正确的。
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
将在稍后阶段再次重建请求{ p>
在我的代码示例中,我保存了整个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
希望它清楚