|
|
目录
. h6 v1 |1 T# x* r* V: n
8 h' q$ L1 C6 U7 n5 o
- B" X7 P" [ L+ N, {/ |$ F: {- 创建OAuth Apps
r+ i! Y v7 G - 获取code
! Z r, c, K" H9 L - 获取access_token- d" N5 j1 @; h% i2 L
- 获取用户信息6 u8 _4 Q1 Y8 \6 a( w
最近在完善我的博客系统,突然想到从原本临时填写 name + email 进行评论改成使用GitHub授权登陆以发表评论。+ |+ R& P' q5 D5 h# C8 }' k
废话不多说,直接奔入主题
+ P+ I- J. ^2 Y温馨提示:本文章只满足个人使用需求,如果需要学习更详细的使用方法,可访问 OAuth官方文档。! G, ~: q% ?6 N* p/ d4 C; Y, g
Q9 {' u% a; j: a+ x; a! L创建OAuth Apps
5 U3 @1 S/ U3 X7 d Q( S, S/ ~- D {2 `( X) H( F
! a2 B. O; F; K: z" `8 T首先,你需要一个GitHub账户然后前往GitHub developers,根据要求填写完成之后,会自动生成Client_ID和Client Secret,在之后的步骤中会用到。
8 }$ j, E7 V6 v! Y
* a+ |, @/ P" v7 B4 g( Y
' C7 ]6 r9 t1 Y获取code' p) M5 ?4 p5 k& l) Y
Z; }8 D9 T0 R4 a/ z
- //methodasync githubLogin() { windows.location.href = "https://github.com/login/oauth/authorize?client_id = your_client_id&redirect_uri=your_redirect_uri"}
复制代码- [url=https://github.com/login/oauth/authorize?client_id = your_client_id&redirect_uri=your_redirect_uri]GitHub登陆[/url]
复制代码 路由参数中redirect_uri是可选的。如果省略,则GitHub将重定向到你在OAuth apps配置的回调路径。如果提供,则你所填写的redirect_uri必须是你在OAuth apps中配置的回调路径的子路径。如下:
# q7 @; n3 v! F# [4 I& j( e1 B( \( z1 c0 S& H( y
CALLBACK: http://xx.com/github8 v u* w4 T* e1 I! T
GOOD: http://xx.com/github! k, H8 l6 O) C& [1 ?( a- q
GOOD: http://xx.com/github/path/path; l" ^: K" R, z3 e( E- D! H
BAD: http://xx.com/git
$ J# R& u$ x- r: Z) h) j0 h% `BAD: http://xxxxx.com/path6 ~ l5 [7 Y" I8 h4 Y. H9 T3 w& s
如果用户接受你的请求,将会跳转到redirect_uri,我们可以接受路由中的参数code,以进行下一步操作。
0 W1 C- K/ F) ]) n0 z* Y- your_redirect_uri?code=xxx
复制代码 获取access_token
5 u2 x* J. \* ?' _6 H$ k8 f# E' {' h: Z6 G4 _! S: G
0 g# J0 m3 x, g# A: |* M
我们需要client_id、client_secret和code来获取access_token。
% k# M7 c/ ? v2 a- /*/githubAccessToken:https://github.com/login/oauth/access_token*/this.$axios .get('/githubAccessToken',{ params: { client_id: your_client_id, client_secret: your_client_secret, code: your_code } })
复制代码 默认情况下,你会获取如下响应:
! u, Z1 B' ^, q5 w1 x- access_token=xxxxx&token_type=bearer
复制代码 如果你想用更方便的格式接收响应,你可以在headers中自定义Accept:
: ^ `, j1 u3 D3 s* R- Accept: "application/json"=> {"access_token":xxxxx,"token_type":bearer}
复制代码 获取用户信息% L* b; g$ {4 d/ B7 A
2 ?" G2 ^' x) N0 H' z
0 @. R" a$ e7 k( i3 _. i
获取access_token之后,我们就可以请求用户的部分信息了:
! y2 X6 U$ @7 u- /*/githubUserInfo:https://api.github.com/user*/this.$axios .get('/githubUserInfo', { headers: { "Content-Type": "application/x-www-form-urlencoded", Accept: "application/json", Authorization: `token ${access_token}` //必填 }})
复制代码 然后你便可以获取到用户信息了。) \2 p1 W, D+ Y {4 F2 `& f+ c
到此这篇关于vue实现GitHub的第三方授权的文章就介绍到这了,更多相关vue实现GitHub的第三方授权内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
. P5 r, d+ y5 J0 ^
* b4 i0 T) B7 ?! {; `来源:http://www.jb51.net/article/227114.htm! Q$ ?7 Q: T1 t1 O8 O
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |
|