Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

获取不到授权码 #8

Open
yhdgithu opened this issue Nov 30, 2020 · 9 comments
Open

获取不到授权码 #8

yhdgithu opened this issue Nov 30, 2020 · 9 comments

Comments

@yhdgithu
Copy link

请问大佬:
调用接口
localhost:8001/oauth/authorize?client_id=web&response_type=code
跳转到login登陆页面之后,没有code码返回,返回的是error
http://localhost:8001/login?error

这是怎么回事?

@copoile
Copy link
Owner

copoile commented Nov 30, 2020

那应该是你授权时的用户名名密码不正确,获取client_id不对吧,我测试授权的时候故意输错账号,返回的是error,你确认下是不是没对。再找不到问题开发debug级别的日志,看下日志,或者打下断点。

@yhdgithu
Copy link
Author

请问下单点退出,是
http://localhost:8001/logout么?怎么退出?

@copoile
Copy link
Owner

copoile commented Nov 30, 2020

/l0gout还是/remove有点忘了,认证中心代码应该有

@yhdgithu
Copy link
Author

yhdgithu commented Jan 7, 2021

大佬,这个本身就是oauth2.0,如何将QQ和微信联合登陆整合进来?忘不吝赐教

@copoile
Copy link
Owner

copoile commented Jan 7, 2021

大佬,这个本身就是oauth2.0,如何将QQ和微信联合登陆整合进来?忘不吝赐教

首先,要明确下第三方登录跟正常登录的区别,第三方登录无非就做了两件事:
一是获取到第三方平台的用户信息;二是利用第三方平台用户信息来初始化一个你本系统的用户信息。

先说下获取第三方平台用户信息,一般获取第三方平台用户信息是获取第三方到授权码,然后授权码换取token,token换取用户信息(貌似还有些地方平台还要换openid的),这个其实就是授权码模式。
获取到地方平台用户信息后,就可以利用这些信息来初始化一个本系统的用户(如果没初始化过)。

初始化完授权信息就可以走本系统的授权流程了。

了解大致流程后可以设计一张表,用于存放第三方用户跟本系统用户映射,字段就大致取认证类型(wx、qq啥的)、uuid(第三方平台用户唯一标识),授权用户(就本系统用户)、授权时间等。

再然后自定义实现一种授权模式,grant_type,请求参数第三方授权码,授权类型,其他视具体情况,然后获取第三方用户信息和初始化本系统用户的逻辑就在自定义的认证提供者里实现即可。

关于如果实现自定义授权模式参考手机号验证码认证模式。

希望能帮助到你。

@yhdgithu
Copy link
Author

大佬,还有个问题,用户第一次需要登录,第二次登录的时间是怎么控制的,即使根据code获取的token都失效了,但是还是不需要登录,只需要重新刷新token,或者根据code重新获取一个token,一样可以访问接口?

@copoile
Copy link
Owner

copoile commented Jan 13, 2021

大佬,还有个问题,用户第一次需要登录,第二次登录的时间是怎么控制的,即使根据code获取的token都失效了,但是还是不需要登录,只需要重新刷新token,或者根据code重新获取一个token,一样可以访问接口?

如果不想使用token刷新机制,可以禁用token刷新,这里说的code是授权码吧,授权码只能用一次的,这样token失效,前端调用接口根据状态码判断token失效就重新登录。

@yhdgithu
Copy link
Author

大佬,你理解错了,我说的是登陆的失效时间是多久?是否一直在操作的话,永远不会需要重新登陆?就拍我现在录单,或者在填写东西,东西填完了,忽然跳转到登陆页面需要登陆,那就惨了,另外再问个问题,这里有多个应用,也就是多个appID,能否先登陆之后,再让客户点击具体的应用来获取code?

@copoile
Copy link
Owner

copoile commented Jun 27, 2021

大佬,你理解错了,我说的是登陆的失效时间是多久?是否一直在操作的话,永远不会需要重新登陆?就拍我现在录单,或者在填写东西,东西填完了,忽然跳转到登陆页面需要登陆,那就惨了,另外再问个问题,这里有多个应用,也就是多个appID,能否先登陆之后,再让客户点击具体的应用来获取code?

token失效时间是固定的,要刷新只能刷新token模式刷新下token,token不会自动续期的

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants