我正在尝试使用Dropbox API,但在我想要授权之前。通过Dropbox API文档,我必须将用户重定向到特定的URL,之后用户必须信任我的应用,然后确认之后用户将被重定向回我的应用程序,其中包含URL中的授权代码。我需要该授权代码才能向端点发出请求。
我正在使用VueJS 2,所以我创建了auth.js文件,我将存储所有相关数据,到目前为止它看起来像这样
export default {
authorize(authCode) {
authCode = authCode || this.getAuthCode()
if(!authCode) {
window.location.replace(`https://www.dropbox.com/1/oauth2/authorize?client_id=${config.APP_KEY}&response_type=code&redirect_uri=${config.REDIRECT_URI}`)
const code = this.stripAuthCode(window.location.href)
this.setAuthCode(code)
}
},
stripAuthCode(url) {
return url.substring(url.indexOf('=') + 1, url-length - 2)
},
getAuthCode() {
return localStorage.getItem('auth-code')
},
setAuthCode(authCode) {
localStorage.setItem('auth-code', authCode)
}
}
因此,我们的想法是将URL中的代码作为auth-code
密钥存储到localStorage中,稍后我可以使用它来向Dropbox端点发出请求,并获取身份验证令牌。
出于测试目的,我正在我的根组件App.vue
中导入该文件,并将授权方法转移到mounted()
钩子中(稍后我会将其移到更好的地方,到目前为止一直很好)。
import auth from './services/Auth'
export default {
...
mounted() {
auth.authorize()
}
}
问题:看起来一切正常,但由于某些原因,localStorage中的auth-code
设置为http://localhost:8080
,即使地址栏中的网址如下http://localhost:8080/?code=<auth_code>#/
注意:
stripAuthCode
方法以其所需的方式获取身份验证代码=
之后的所有内容,并删除最后2个字符 由Vue和斜线生成的hashbang。
感谢。