重定向后从URL获取auth代码

时间:2017-03-22 19:53:50

标签: javascript vue.js

我正在尝试使用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。

感谢。

0 个答案:

没有答案