京东6.18大促主会场领京享红包更优惠

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9537|回复: 0

vue实现GitHub的第三方授权方法示例

[复制链接]

23

主题

0

回帖

10

积分

新手上路

积分
10
发表于 2021-11-12 08:26:21 | 显示全部楼层 |阅读模式 来自 中国
目录
" }9 d+ g" }$ S% Q. Z6 _
& d2 S6 D' Y' m4 r* N: }. m
    5 H3 A6 U8 {  C
  • 创建OAuth Apps; S9 G- j' `+ w: y5 @  W
  • 获取code
    / Z: u5 {& [* I* F
  • 获取access_token
    " A+ z3 B- g2 ?0 W
  • 获取用户信息: a; G: s2 S& \  I1 Q/ Y
最近在完善我的博客系统,突然想到从原本临时填写 name + email 进行评论改成使用GitHub授权登陆以发表评论。
4 S* c* c+ F8 I# B0 A* _* |废话不多说,直接奔入主题# Y4 {9 x. |$ ]& _6 K& M0 G
温馨提示:本文章只满足个人使用需求,如果需要学习更详细的使用方法,可访问 OAuth官方文档。
7 r, U. y/ F8 Y* V, D( ]" k* h
1 e# r. z+ ^5 W6 P1 P创建OAuth Apps
: X& P+ g, W; X$ O  y1 O
5 B+ M# x3 k( U# W- o, C& S5 A+ b: T

" V  T3 Q, ]; i8 u+ y- P$ o4 ?首先,你需要一个GitHub账户然后前往GitHub developers,根据要求填写完成之后,会自动生成Client_ID和Client Secret,在之后的步骤中会用到。2 L/ \7 v) Y# a# Z/ f
0 j4 z: {! O: J. N; J

2 z- R9 b) [0 T4 p+ \/ Q获取code0 N' a2 `! ]6 q7 [. c- q

7 z3 W4 [- H& p# f# w8 I
  1. //methodasync githubLogin() { windows.location.href =     "https://github.com/login/oauth/authorize?client_id = your_client_id&redirect_uri=your_redirect_uri"}
复制代码
  1. [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中配置的回调路径的子路径。如下:
" e  h8 G5 A3 u, b0 I
! p0 G0 x; _6 L: o6 o7 M% iCALLBACK: http://xx.com/github5 [1 s+ {% s/ a1 ?) r0 s
GOOD: http://xx.com/github
& a. e; I2 a& D1 ~2 y/ U) V  PGOOD: http://xx.com/github/path/path
1 G% o7 ]$ d6 g- IBAD: http://xx.com/git
0 ^2 _: t/ M. j# C1 H5 QBAD: http://xxxxx.com/path
' w8 y" S; y1 a6 {8 n如果用户接受你的请求,将会跳转到redirect_uri,我们可以接受路由中的参数code,以进行下一步操作。: [3 h* a1 p' X6 k+ O3 _- B
  1. your_redirect_uri?code=xxx
复制代码
获取access_token( ^: j$ I) Z+ a  z! x7 n1 \) p+ q

6 L# j* ^  _, |: u: B  Z; E$ e+ k- F* p( E) v
我们需要client_id、client_secret和code来获取access_token。5 m" ~- O* N) s5 D: l9 s# b& R
  1. /*/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  } })
复制代码
默认情况下,你会获取如下响应:
. I* i# M! X, d
  1. access_token=xxxxx&token_type=bearer
复制代码
如果你想用更方便的格式接收响应,你可以在headers中自定义Accept:
2 ^$ |. _0 y9 {
  1. Accept: "application/json"=> {"access_token":xxxxx,"token_type":bearer}
复制代码
获取用户信息
6 z8 t! Z- N  A5 T  g
& R5 x' s9 y# S, Z
6 V: z3 c( F* M# ~
获取access_token之后,我们就可以请求用户的部分信息了:
- @" s7 N6 H3 C
  1. /*/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}` //必填  }})
复制代码
然后你便可以获取到用户信息了。) x1 V) \9 P6 i. X9 K6 H
到此这篇关于vue实现GitHub的第三方授权的文章就介绍到这了,更多相关vue实现GitHub的第三方授权内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! ! b+ L4 n3 }; B' l
3 z; o5 H2 T% u( S2 I
来源:http://www.jb51.net/article/227114.htm  z" u7 b* `) V8 [' [2 _3 }. @
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

帖子地址: 

梦想之都-俊月星空 优酷自频道欢迎您 http://i.youku.com/zhaojun917
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|梦想之都-俊月星空 ( 粤ICP备18056059号 )|网站地图

GMT+8, 2026-9-18 21:01 , Processed in 0.075963 second(s), 24 queries .

Powered by Mxzdjyxk! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表