如何在PHP和cURL中使用OAuth?

时间:2022-09-06 12:05:07

I'm trying to authenticate to YouTube via their Data API and simply need to know how the headers should be translated from their example (below) to PHP+CURL function calls. The confusing part being the Authorization portion, which breaks name/value pairing with its own set of name and value pairs.

我正在尝试通过他们的数据API对YouTube进行身份验证,只需要知道如何将标头从他们的示例(下面)转换为PHP + CURL函数调用。令人困惑的部分是授权部分,它打破了与其自己的一组名称和值对的名称/值配对。

This documentation is all well and good except I don't know how to format what they require in the headers.

这个文档很好,除了我不知道如何在标题中格式化他们需要的内容。

Their example:

POST /accounts/OAuthGetRequestToken HTTP/1.1
Host: https://www.google.com
Content-Type: application/x-www-form-urlencoded
Authorization: OAuth
               oauth_consumer_key="example.com",
               oauth_signature_method="RSA-SHA1",
               oauth_signature="wOJIO9A2W5mFwDgiDvZbTSMK%2FPY%3D",
               oauth_timestamp="137131200",
               oauth_nonce="4572616e48616d6d65724c61686176",
               oauth_version="1.0"
scope=http://gdata.youtube.com

This doesn't need to be fancy, I just need to do the key exchange for one account so I can upload videos automatically. I just don't know how to format the Authorization items into a headers array for my

这不需要花哨,我只需要为一个帐户进行密钥交换,这样我就可以自动上传视频。我只是不知道如何将授权项格式化为我的标题数组

curl_setopt($ch, CURLOPT_HEADER, $headers);

Help?

2 个解决方案

#1


18  

i didn't used the youtube api before but i have made my own REST api using OAuth for a web app.

我之前没有使用过youtube api,但是我已经使用OAuth为Web应用程序创建了自己的REST api。

the header should be: application/x-www-form-urlencoded and as the example say, the parameters as oauth_consumer_key, oauth_signature_method,oauth_signature etc.. need to be sent using post, so you need to put it like this:

标题应该是:application / x-www-form-urlencoded并且如示例所示,参数为oauth_consumer_key,oauth_signature_method,oauth_signature等..需要使用post发送,所以你需要像这样:

        $header[]         = 'Content-Type: application/x-www-form-urlencoded';

            curl_setopt($ch, CURLOPT_HTTPHEADER,     $header);
            curl_setopt($ch, CURLOPT_POST,        true);
            curl_setopt($ch, CURLOPT_POSTFIELDS, urlencode("oauth_consumer_key=example.com&
           oauth_signature_method=RSA-SHA1&
           oauth_signature=wOJIO9A2W5mFwDgiDvZbTSMK%2FPY%3D&
           oauth_timestamp=137131200&
           oauth_nonce=4572616e48616d6d65724c61686176&
           oauth_version=1.0"));

i hope it helps :D

我希望它有所帮助:D

Regards.

#2


1  

I also see another example here , http://developer.yahoo.com/boss/search/boss_api_guide/codeexamples.html#oauth_php

我还在这里看到另一个例子,http://developer.yahoo.com/boss/search/boss_api_guide/codeexamples.html#oauth_php

#1


18  

i didn't used the youtube api before but i have made my own REST api using OAuth for a web app.

我之前没有使用过youtube api,但是我已经使用OAuth为Web应用程序创建了自己的REST api。

the header should be: application/x-www-form-urlencoded and as the example say, the parameters as oauth_consumer_key, oauth_signature_method,oauth_signature etc.. need to be sent using post, so you need to put it like this:

标题应该是:application / x-www-form-urlencoded并且如示例所示,参数为oauth_consumer_key,oauth_signature_method,oauth_signature等..需要使用post发送,所以你需要像这样:

        $header[]         = 'Content-Type: application/x-www-form-urlencoded';

            curl_setopt($ch, CURLOPT_HTTPHEADER,     $header);
            curl_setopt($ch, CURLOPT_POST,        true);
            curl_setopt($ch, CURLOPT_POSTFIELDS, urlencode("oauth_consumer_key=example.com&
           oauth_signature_method=RSA-SHA1&
           oauth_signature=wOJIO9A2W5mFwDgiDvZbTSMK%2FPY%3D&
           oauth_timestamp=137131200&
           oauth_nonce=4572616e48616d6d65724c61686176&
           oauth_version=1.0"));

i hope it helps :D

我希望它有所帮助:D

Regards.

#2


1  

I also see another example here , http://developer.yahoo.com/boss/search/boss_api_guide/codeexamples.html#oauth_php

我还在这里看到另一个例子,http://developer.yahoo.com/boss/search/boss_api_guide/codeexamples.html#oauth_php