gpt4 book ai didi

php - 即使 token 存在,也没有ActiveAccessToken - OAuth2 + Laravel + Swift 的 Lumen

转载 作者:行者123 更新时间:2023-11-30 10:09:35 24 4
gpt4 key购买 nike

我成功访问了 access_token,但是在获取 user_id 时遇到问题。我收到错误:

NoActiveAccessTokenException Authorizer.php line 104 Tried to access session data without an active access token

我做错了什么?

$app->get('/me', function () {
$id = Authorizer::getResourceOwnerId();
return response()->json(['id' => $id]);
});

在 Swift 上(请注意 token 有效):

func me(handler: (data: NSDictionary?, error: String?) -> Void)
{
let url = NSURL(string: "/me", relativeToURL: self.baseUrl)
let request = NSMutableURLRequest(URL: url!)
request.HTTPMethod = "GET"

if let t = self.getAccessToken()
{
request.setValue("Bearer \(t)", forHTTPHeaderField: "Authorization")

print(t) // Token is valid "y7bPb1NgUBxmHSIbwsgBgPxJcM0ywnithG5PvEEv"

let taskInstance = DataTaskHandler()
taskInstance.make(request, handler: { (result, error) -> Void in
if let res = result
{
if let jsonDictionary = JSONParser(data: res).dictionary()
{
print(jsonDictionary)
handler(data: jsonDictionary, error: nil)
}
}
})
}
else
{
handler(data:nil, error: "The access token is not available")
}
}

最佳答案

请考虑到您的access_token仅在短时间内有效。所以在那之后,必须使用refresh_toke、grant_type刷新访问 token 。查看详细信息:https://github.com/lucadegasperi/oauth2-server-laravel/wiki/Implementing-an-Authorization-Server-with-the-Refresh-Token-Grant

或者,您可以增加 access_token 的时间。只需进入 config/oauth.php 并更改 ttl 索引(通常为 3600 -> 1 小时),请考虑到出于安全原因,一个 access_token 的时间必须较短,因此不要将 ttl 增加太多。

<小时/>

编辑:

检查您是否在 Controller 方法中或在请求期间使用 oauth 中间件非常重要,因为该中间件在整个请求期间稳定 access_token 值。只需将其添加到 Controller 的构造函数中即可。

public function __construct()
{
$this->middleware('oauth');
}

希望有帮助。

投注愿望。

PS(其他读者):这个问题与Lumen类(class)相关here

关于php - 即使 token 存在,也没有ActiveAccessToken - OAuth2 + Laravel + Swift 的 Lumen,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33710460/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com