1

我正在关注weebly 上的文档来配置oauth

但是,将 :jwt 添加到 manage_app_url 不起作用。令牌永远不会被 jwt 替换,它像往常一样简单地附加到末尾 - 将令牌也作为 url 的一部分。

即,在 manifest.json “manage_app_url”中执行此操作:“ https://www.example.com/thepage.php?manage=yes&jwt=:jwt ”,

返回: https://www.example.com/thepage.php?manage=yes&jwt=:jwt?thejwtstring 令牌永远不会被替换...

任何人都知道为什么做文档所说的不起作用?我做错了什么?

4

3 回答 3

0

比尔,你是对的,这是 weebly 的问题,所以你无法解决。:jwt 当有人从应用程序管理器菜单单击管理链接时替换很好,但是当它来自 OAuth 进程时它不能很好地替换。

几天前我遇到了同样的问题,只需删除 :jwt 并让 weebly 将其附加到 URL 的末尾即可。

我希望它也对您有用,否则我建议您通过 dev-support@weebly.com 联系 weebly 的开发支持并报告此问题。

于 2017-04-10T11:24:42.887 回答
0

不幸的是,您实际上并没有理解这个问题。这不是是否需要 :jwt 的问题,而是它似乎不像记录的那样工作。

这个问题的答案是这样的:作为草稿应用程序安装时它不起作用,但是,通过应用程序界面访问“管理应用程序”链接是正确的。即,将 :jwt 替换为正确的 url。

所以问题在于安装草稿应用程序,而不是通过正面界面实际管理应用程序。

该文档对于最终结果是正确的,但不适用于作为草稿应用程序安装。这是实际的文档....

注意:Weebly 会自动将 JWT 字符串附加到 URL 的末尾,包括任何必要的操作数(如 ? 和 &)。如果您希望将 JWT 放置在 URL 的特定部分,您可以使用 :jwt,Weebly 将用 JWT 替换它(不添加任何操作数 - 您需要包含这些操作数)。

于 2017-01-29T15:44:41.410 回答
0

我从https://stackoverflow.com/a/40920748/3925032引用,但在这里回答是因为问题并不完全相同。

您不需要 :jwt 在清单中。在您为 manage_app_url 设置的网站页面上,您将收听 jwt,因为正如您所指出的,它会附加到它上面。

*您也可以使用“oauth_final_destination”:“manage”,如果您希望它们在安装后最终出现在您的站点上。

{
  "manifest": "1",
  "version": "1.1.1",
  "client_id" : "123456789101112",
  "callback_url" : "https://www.your-domain.com/callback.php",
  "scopes": ["read:site", "write:site"],
  "manage_app_url": "https://www.your-domain.com/manage.php",
  "oauth_final_destination" : "manage",
  "locale": {
  "default": "en-us",
  "supported": ["en-us"]
},
"webhooks": {
    "callback_url": "https://www.your-domain.com/webhooks.php",
    "events": ["app.uninstall", "site.publish", "site.delete"]
},
"snippet": "files/assets/snippet.tpl"
}


在您网站的 manage_app_url 页面上,您将执行以下操作:

require('firebase/src/JWT.php');
use \Firebase\JWT\JWT;

if (isset($_GET['jwt'])) {
    $app_client_id = "Your APP ID";
    $client_secret = "Your APP SECRET";
    $jtw = $_GET['jwt'];

    /**
    * You can add a leeway to account for when there is a clock skew times between
    * the signing and verifying servers. It is recommended that this leeway should not be bigger than a few minutes.
    * Source: http://self-issued.info/docs/draft-ietf-oauth-json-web-token.html#nbfDef
    */

     try {
       JWT::$leeway = 60; // $leeway in seconds
       $decoded = JWT::decode($jtw, $client_secret, array('HS256'));
       if (!empty($decoded)) {
           $decoded_array = (array) $decoded;
           // Continue with your websites code to verify the Weebly users info
           // $decoded_array['user_id'];
           // $decoded_array['site_id'];
           // $decoded_array['iat'];
           // $decoded_array['jti'];
           // $decoded_array['callback_url']; 
       }
     } //END TRY 
     catch (InvalidArgumentException $e) {
        echo $e->getMessage();
     }
     catch (UnexpectedValueException $e) {
        echo $e->getMessage();
     }
     catch (DomainException $e) {
        echo $e->getMessage();
     }
}// END IF ISSET JWT
于 2017-01-29T13:59:17.733 回答