如果您想了解php–BuzzAPI的未知授权标头错误–使用ZendOAuth的知识,那么本篇文章将是您的不二之选。同时我们将深入剖析401使用authlibAsyncOAuth2Client的未经授权
如果您想了解php – Buzz API的未知授权标头错误 – 使用Zend OAuth的知识,那么本篇文章将是您的不二之选。同时我们将深入剖析401使用authlib AsyncOAuth2Client的未经授权的响应、Apache 2.4 + PHP-FPM和授权标头、asp.net-mvc – auth ASP.NET MVC REST API的最佳选择是什么? OAuth 2.0还是OAuth 1.0?、autoplay menu builder zend api扩展的php对象的autoload工具的各个方面,并给出实际的案例分析,希望能帮助到您!
本文目录一览:- php – Buzz API的未知授权标头错误 – 使用Zend OAuth
- 401使用authlib AsyncOAuth2Client的未经授权的响应
- Apache 2.4 + PHP-FPM和授权标头
- asp.net-mvc – auth ASP.NET MVC REST API的最佳选择是什么? OAuth 2.0还是OAuth 1.0?
- autoplay menu builder zend api扩展的php对象的autoload工具
php – Buzz API的未知授权标头错误 – 使用Zend OAuth
活动:
{"error":{"errors":[{"message":"UnkNown authorization header","locationType":"header","location":"Authorization"}],"code": 401,"message":"UnkNown authorization header"}}
这是我发送的请求(用于调试):
POST /buzz/v1/activities/@me/@self?alt=json HTTP/1.1 Host: www.googleapis.com Connection: close Accept-encoding: gzip,deflate User-Agent: Zend_Http_Client Content-Type: application/json Authorization: OAuth realm="",oauth_consumer_key="eawp.com",oauth_nonce="ce29b04ce6648fbb92efc8f08c1c0091",oauth_signature_method="HMAC- SHA1",oauth_timestamp="1277934794",oauth_version="1.0",oauth_token="1%2FcBzo5ckGvCAm3wLWh1SDH3xQNow-- yek1NVfUa1Qqns",oauth_signature="CUezSiMbvxyN1BTeb3uROlIx8gA%3D" Content-Length: 86 {"data":{"object":{"type":"note","content":"Using OAuth with Twitter - PHP Example"}}}
获取access_token的所有其他请求工作得很好,但是
现在我不太清楚为什么它不起作用.
**更新
为了帮助调试更多,这里是有问题的代码:
$config = array( //'requestScheme' => Zend_Oauth::REQUEST_SCHEME_HEADER,//'version' => '1.0',//'signatureMethod' => 'HMAC-SHA1','callbackUrl' => $callback,'siteUrl' => $url,'consumerKey' => $consumerKey,'consumerSecret' => $consumerPass ); $statusMessage = $title; $token = unserialize($accesstoken); $client = $token->getHttpClient($config); $client->setUri('https://www.googleapis.com/buzz/v1/activities/@me/ @self?alt=json'); $client->setMethod(Zend_Http_Client::POST); $client->setEncType(Zend_Http_Client::ENC_FORMDATA); $client->setHeaders('Content-Type: application/json'); $data = array( 'data' => array( 'object' => array( 'type' => 'note','content' => $statusMessage,),); $dataxml = "<entry xmlns='http://www.w3.org/2005/Atom' xmlns:activity='http://activitystrea.ms/spec/1.0'> <activity:object> <activity:object-type>http://activitystrea.ms/schema/1.0/ note</activity:object-type> <content type='html'>$statusMessage<content> </activity:object> </entry>"; //$client->setRawData($dataxml); $client->setRawData(Zend_Json::encode($data)); //$client->setParameterPost("content",$statusMessage); $response = $client->request();
**正如你所看到的,我用xml原子和.进行了一些测试
json要求 – 两者都没有太大的运气.
你能看到任何明显的错误吗?另一个提醒我,我
我正在使用Zend_Oauth.
解决方法
使用选项:
‘requestScheme’=> Zend_Oauth :: REQUEST_SCHEME_QUERYSTRING
在你的$config数组中
这次改变后我的问题得到了解决
PS更多代码:
$OAuthConfiguration = array( 'version' => '1.0','requestScheme' => Zend_Oauth::REQUEST_SCHEME_QUERYSTRING,'signatureMethod' => 'HMAC-SHA1','callbackUrl'=>'####','requestTokenUrl' => 'https://www.google.com/accounts/OAuthGetRequestToken','authorizeUrl' => 'https://www.google.com/buzz/api/auth/OAuthAuthorizetoken','accesstokenUrl' => 'https://www.google.com/accounts/OAuthGetAccesstoken','consumerKey' => '####','consumerSecret' => '####',); $OAuthConsumer = new Zend_Oauth_Consumer($OAuthConfiguration); //authorizeOAuth $params = array( 'domain'=>'####','scope'=>'https://www.googleapis.com/auth/buzz' ); $token = $OAuthConsumer->getRequestToken($params); $_SESSION['token']['buzz'] = serialize($token); $OAuthConsumer->redirect($params); //callbackOAuth if (!empty($_GET) && isset($_SESSION['token']['buzz'])) { $token = $consumer->getAccesstoken( $_GET,unserialize($_SESSION['token']['buzz']) ); unset($_SESSION['token']); return serialize($token); } else { return false; }
401使用authlib AsyncOAuth2Client的未经授权的响应
如何解决401使用authlib AsyncOAuth2Client的未经授权的响应?
我正在尝试使用Asyncoauth2client客户端对请求进行身份验证:
async def get_oauth_client():
client = Asyncoauth2client(os.environ[''OAUTH_CLIENT_ID''],os.environ[''OAUTH_CLIENT_SECRET''],scope=''my_scope'',grant_type=''client_credentials'',token_endpoint=os.environ[''OAUTH_TOKEN_URL''],timeout=3600)
await client.fetch_token(os.environ[''OAUTH_TOKEN_URL''])
return client
,然后使用客户端发出请求:
async def make_request(method,data,headers):
client = await get_oauth_client()
await client.ensure_active_token()
method = getattr(client,method)
response = await method(url,data=data,headers=headers)
client.close()
return response
但是,当调用上述方法时,我会一直返回401:<Response [401 Unauthorized]>
,尽管事实上,当我查看令牌上的expires_at
时,仍然还有很多时间:
{''access_token'': ''some_token'',''expires_in'': 3600,''token_type'': ''Bearer'',''expires_at'': 1600388963} # Now + 1hr utc
可能与我昨天成功尝试相同的方法(设置timeout=None
并成功)有关。但是,今天尝试相同的代码时,我遇到了这些失败。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)
Apache 2.4 + PHP-FPM和授权标头
简介: Apache 2.4的mod_proxy似乎没有将Authorization标头传递给PHP-FPM。有没有什么办法解决这一问题?
长版: 我正在使用Apache 2.4和PHP-
FPM运行服务器。我正在将APC用于操作码缓存和用户缓存。根据Internet的建议,我使用Apache
2.4的mod_proxy_fcgi将请求代理到FPM,如下所示:
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/foo/bar/$1
设置工作正常,除了以下几点:APC捆绑的apc.php(用于监视APC的状态)不允许我登录(查看用户缓存条目时需要)。当我单击“用户缓存条目”以查看用户缓存时,它要求我登录,单击“登录”按钮将显示通常的HTTP登录表单,但是输入正确的登录名和密码不会成功。当使用mod_php而不是mod_proxy
+ php-fpm运行时,此功能可以完美运行。
经过一番谷歌搜索后,我发现其他人也遇到了同样的问题,并且发现这是因为Apache没有将Authorization
HTTP标头传递给外部FastCgi进程。不幸的是,我只找到了针对mod_fastcgi的修复程序,如下所示:
FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi -host 127.0.0.1:9000 -pass-header Authorization
是否有与mod_proxy_fcgi一起使用的等效设置或某些解决方法?
答案1
小编典典Authorization
通常出于“安全原因”,各种Apache模块将剥离标头。它们都有不同的晦涩设置,您可以调整它们以否决此行为,但是您需要确定到底是哪个模块引起的。
您可以通过通过env将标头直接传递给PHP来解决此问题:
SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
asp.net-mvc – auth ASP.NET MVC REST API的最佳选择是什么? OAuth 2.0还是OAuth 1.0?
>为什么在这种情况下最好使用OAuth2流?
>我们应该使用Oauth2还是坚持使用2腿OAuth 1?
作为参考,我们使用C#/ .NET,ASP.NET MVC 3并计划使用DotNetopenAuth v4.
http://developer.factual.com/display/docs/Factual+Developer+APIs+Version+3
解决方法
Why OAuth2 flow is the best to use in this scenario?
它不是必然的. OAuth 2是一个未完成的规范.如果您需要最大的互操作性,OAuth 1.0是更好的选择(目前). OAuth 2对于客户端来说更简单,代价是服务器上的复杂性显着增加.
Should we even use OAuth2 or just stick with 2-legged OAuth 1?
使用上面列出的优缺点进行选择.而且,如果您使用的是DotNetopenAuth,OAuth 1.0支持已经存在多年,而OAuth 2.0支持尚未完全发布,因此您可能会遇到一些障碍.
autoplay menu builder zend api扩展的php对象的autoload工具
关于php – Buzz API的未知授权标头错误 – 使用Zend OAuth的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于401使用authlib AsyncOAuth2Client的未经授权的响应、Apache 2.4 + PHP-FPM和授权标头、asp.net-mvc – auth ASP.NET MVC REST API的最佳选择是什么? OAuth 2.0还是OAuth 1.0?、autoplay menu builder zend api扩展的php对象的autoload工具的相关信息,请在本站寻找。
本文标签: