PHP OAuthProvider库 - invalid_signature,OAuth Flow ......只是困惑

时间:2011-08-17 13:44:34

标签: php oauth

我正在尝试使用PHP.net中的OAuthProvider库,当然,它没有记录。我遵循了Rasmus的教程,我遵循了djpate.com的教程,他们都没有为我工作,Rasmus没有链接到任何来源,他链接到的例子的来源是令人困惑的,当然,没有'跑步时工作。

我似乎总是得到一个“签名不匹配”的错误,我真的不明白,因为我已经按照教程去了T.。

无论如何,这应该是什么流程? 1.创建消费者密钥/秘密。校验。 2.获取访问令牌?我收到错误 - 签名来自哪里? 3.获取请求令牌?我收到错误

我正在尝试创建一个OAuthProvider,这样我就可以创建一个可以远程调用我的API的消费者帐户,而且对于一个初学者来说这似乎很难记录......无论如何都要在PHP土地上。

如果有人有任何正在运行的OAuthProvider库或者可以更详细地向我解释这一点,我将不胜感激。

提前致谢。

2 个答案:

答案 0 :(得分:2)

http://oauth.net/core/1.0a/告诉你基本流程。

  1. 消费者获取消费者密钥和秘密。
  2. 消费者获取请求令牌。
  3. 使用者将用户重定向到提供者的身份验证端点。
  4. 用户签署请求令牌(或不签名)。
  5. 消费者为其签名的请求令牌交换身份验证令牌。
  6. 消费者使用其身份验证令牌来访问受保护的信息。
  7. http://oauth.net/core/1.0a/#signing_process描述了请求的签名方式。

      

    “签名过程对消费者秘密和令牌秘密进行编码   转换为请求中包含的可验证值。“

    如果您使用的是pecl oauth / oauthprovider代码,则会自动为您生成签名(未记录但真实)。您可以通过将以下内容放入提供程序中的oauthexception catch部分来检查签名是什么:

    catch (OAuthException $E) 
    {
        error_log(print_r($this->provider, true));
        echo OAuthProvider::reportProblem($E);
        $this->oauth_error = true;
    }
    

    以及您的oauth消费者oauthexception catch部分中的以下内容:

    catch(OAuthException $E)
    {
        error_log(print_r($oauth, true));
        echo $E->getMessage();
    }
    

    通过这种方式,您可以检查错误日志,找出签名是什么以及签名是否确实不匹配。

答案 1 :(得分:0)

我有类似的错误。在我的情况下,这似乎是由于http与https网址中的签名不匹配造成的。

我会检查你是否在http和https之间重新定向。