Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中从网站API获取授权令牌_Php_Json_Api_Curl - Fatal编程技术网

在PHP中从网站API获取授权令牌

在PHP中从网站API获取授权令牌,php,json,api,curl,Php,Json,Api,Curl,我正在做一个项目,我需要集成一个api。API的网站要求对其API的每个请求都通过授权令牌进行授权。 我的问题是如何安全地保存授权令牌,并在到期后重新生成令牌,以便我的网站的用户能够使用访问令牌进行请求。 令牌将在2小时后过期 下面是我获取授权令牌的请求和响应 response = unirest.post("https://webapisite.com/merchant/access", headers={ "Accept": "application/json" }, param

我正在做一个项目,我需要集成一个api。API的网站要求对其API的每个请求都通过授权令牌进行授权。 我的问题是如何安全地保存授权令牌,并在到期后重新生成令牌,以便我的网站的用户能够使用访问令牌进行请求。 令牌将在2小时后过期 下面是我获取授权令牌的请求和响应

    response = unirest.post("https://webapisite.com/merchant/access", 
headers={ "Accept": "application/json" }, 
params={ "apiKey": "my_api_key, "secret": "my_secret" });
我将收到以下
json
响应

    {
   "status": "success",
   "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MTQwLCJuYW1lIjoic2F2YW5hIHNtYXJ0c2F2ZSIsImFjY291bnROdW1iZXIiOiIiLCJiYW5rQ29kZSI6Ijk5OSIsImlzQWN0aXZlIjp0cnVlLCJjcmVhdGVkQXQiOiIyMDE2LTEyLTA4VDEwOjM4OjE5LjAwMFoiLCJ1cGRhdGVkQXQiOiIyMDE3LTA2LTE0VDEzOjAxOjQ5LjAwMFoiLCJkZWxldGVkQXQiOm51bGwsImlhdCI6MTQ5ODMzNTE2NSwiZXhwIjoxNDk4MzQyMzY1fQ.WojvkYOC2j6XTUfg_E4WQkxQChPUyCgYUCIKaW83YXA", // a valid merchant token
   "config":{}
 }

您应该将此令牌保存在DB中。 在一个表中,保存访问令牌、身份验证令牌和过期日期。 如果需要,可以保存多条记录,但如果只有一个身份验证令牌,一条记录就足够了

在每次调用该API之前,您都要在DB中检查可用的访问令牌是否仍然有效,如果无效,则必须通过auth令牌续订访问令牌

我不明白你用哪种语言来完成这项任务。 如果使用javascript,您可以为后端发布帖子,询问最新的有效令牌


希望这会有所帮助。

对于这样的用例,最常用的标准可能是

OAuth是一种广泛认可的HTTP之上的协议,用于在成功身份验证后向客户端颁发令牌(另请参见ServerFault上的:“”)。它提供不同的“流”来获取令牌,在您的情况下,最合适的可能是“”流。然后,客户机可以使用提供给他们的令牌来发出实际的API请求


存储令牌通常在数据库中完成。在真正无状态的应用程序中,可以消除在服务器端存储令牌的需要。

最好将令牌保存在DB中并存储在会话中。 对于每个请求,您都可以从会话中获取令牌,并通过DB存储的会话跟踪会话活动。
基本上这种东西是项目流程的一部分,因此,根据项目需要和安全方面的流程,我们可以做出决定。

这里的标准方法是将令牌保存到用户的会话中,或保存到一个表中的数据库中,在该表中,令牌与用户帐户链接,并随附到期日期,以便在需要时进行刷新,然后可以使用magic方法调用()在php中,并在API上检查您的令牌是否仍然有效,如果不只是请求一个新令牌的话。在结束续订令牌的过程后,将执行被调用函数,现在将使用一个新令牌。