layerhq / layer-identity-token-php
Layer PHP 身份令牌提供程序
此软件包的规范仓库似乎已消失,因此已将其冻结。
Requires
- php: >=5.3.0
- namshi/jose: ^6.0
This package is not auto-updated.
Last update: 2020-03-06 16:51:07 UTC
README
该文件夹中的代码提供了一个用于生成 Layer 身份令牌的 PHP 库。此 PHP 库支持 php 5.4 及以上版本。
可在 Packagist 上获取。
安装
使用 Composer 将 Layer 身份令牌提供程序添加到您的项目中
cd <your_project> composer require layerhq/layer-identity-token-php composer update
初始设置
在您使用代码之前,需要设置以下 3 个环境变量
LAYER_PROVIDER_ID- 在 Layer 控制台中找到的提供程序 IDLAYER_PRIVATE_KEY_ID- 在 Layer 控制台中生成并存储的公钥LAYER_PRIVATE_KEY- 与公钥关联的私钥内容
所有这些值都可在您的应用的 Layer 控制台“密钥”部分找到。您还可以在库中手动设置这些值(请参阅以下详细信息)。
使用
$layerIdentityTokenProvider = new \Layer\LayerIdentityTokenProvider(); $identityToken = $layerIdentityTokenProvider->generateIdentityToken(USER_ID, NONCE);
generateIdentityToken 方法需要 2 个参数
USER_ID: 您想要认证的用户 ID。NONCE: 从 Layer 收到的 nonce。有关更多信息,请参阅 文档。
默认情况下,LayerIdentityTokenProvider 将查找 LAYER_PROVIDER_ID、LAYER_PRIVATE_KEY_ID 和 LAYER_PRIVATE_KEY 环境变量以获取凭证。您可以通过取消注释以下行并替换它们的值来覆盖这些值
$layerIdentityTokenProvider->setProviderID("layer:///providers/..."); $layerIdentityTokenProvider->setKeyID("layer:///keys/..."); $layerIdentityTokenProvider->setPrivateKey("----BEGIN RSA PRIVATE KEY....");
运行示例
Composer 软件包在公共文件夹中包含一个示例。此示例可以轻松部署到 Heroku。
然后向包含 authenticate.php 的服务器发送一个示例请求
curl \ -D - \ -X POST \ -d "nonce=NONCE" -d "user_id=USER_ID" \ http://YOUR_SERVER/authenticate.php``` Upon success, the endpoint will return a JSON object that contains a single key, `identity_token`. If the required input parameters were not provided, the endpoint will respond with "Invalid response." Example successful response: ```console HTTP/1.1 200 OK Date: Thu, 13 Aug 2015 06:18:56 GMT Server: Apache/2.4.10 (Unix) PHP/5.5.24 X-Powered-By: PHP/5.5.24 Content-Length: 519 Content-Type: text/html {"identity_token":"..SNIP.."}
验证
您应通过访问 Layer 控制台 的 工具 部分,验证签名请求的输出。将上面输出中收到的 identity_token 键的值粘贴并单击 验证。您应看到“令牌有效”。
将示例部署到 Heroku
自动化安装
手动安装
您可以轻松将 PHP 代码部署到 Heroku。
安装 Heroku 工具包 以开始,然后按照他们的“入门”说明操作,包括首次登录
% heroku login
Enter your Heroku credentials.
Email: youremail@example.com
Password:
Could not find an existing public key.
Would you like to generate one? [Yn]
Generating new SSH public key.
Uploading ssh public key /Users/you/.ssh/id_rsa.pub
在您的新目录中,确保您已创建了一个 git 仓库,并且您的作品已被提交
% git init
% git add .
% git commit -m "Initial commit"
然后创建一个 Heroku 应用程序
% heroku create
Creating young-waterfall-2641... done, stack is cedar
http://young-waterfall-2641.herokuapp.com/ | git@heroku.com:young-waterfall-2641.git
Git remote heroku added
在您部署应用程序之前,您需要为服务器配置一些环境变量。您可以从 Layer 控制台的“身份验证”部分获取这些值。
% heroku config:set LAYER_PROVIDER_ID=yourlayerproviderid
% heroku config:set LAYER_PRIVATE_KEY_ID=yourlayerkeyid
此代码将在文件layer-key.pem中寻找私钥。您在仪表板生成身份验证密钥时将获得私钥。您可以选择将私钥添加为环境变量。
% heroku config:set LAYER_PRIVATE_KEY="-----BEGIN RSA PRIVATE KEY-----
...
-----END RSA PRIVATE KEY-----"
此时,您已经准备好部署并开始聊天。使用Heroku,只需进行一次git push即可。
% git push heroku master
您将看到一些文本飞过,最终会看到一些成功的提示。现在,您应该准备好测试代码。如果服务器返回错误,您可以查看日志来尝试调试。
% heroku logs
如果您对代码进行了任何更改,只需像以前一样提交并推送它们即可。
% git commit -am "Updating server code"
% git push heroku master