GVKun编程网logo

php – Buzz API的未知授权标头错误 – 使用Zend OAuth

11

如果您想了解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

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的未经授权的响应

如何解决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 + 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?

asp.net-mvc – auth ASP.NET MVC REST API的最佳选择是什么? OAuth 2.0还是OAuth 1.0?

我们正在使用ASP.NET MVC构建REST API.此API在原理和用法上与Factual v3 API类似.他们使用双腿Oauth 1作为他们的API.我们的设计与应用程序非常相似,主要是移动设备将在幕后使用我们的API来提供服务.应用程序的最终用户将不知道我们的API,因此将没有任何凭据.因此,通过浏览器窗口将用户重定向到身份验证表单(如facebook)没有任何意义.我的问题是……

>为什么在这种情况下最好使用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工具的相关信息,请在本站寻找。

本文标签: