如何通过基于OAuth的API连接Vue.js
很多人都使用过基于OAuth的API,比如你在一些网站使用GitHub登录的时候,你就使用GitHub提高的OAuth2 API,或者你使用Google或者Facebook登录的时候,你也会使用到它。
现在OAuth真的无处不在,也许因为它真的非常好,用户只要点一个按钮,然后得到权限,这样就可以了。
但是当我们进行开发它的时候,就是另外 一个故事了,也许是因为它一次性引入了太多的新的内容。本文我们会介绍一个小的工具Bearer.sh Pizzly,有了它之后开发OAuth就方便多了。
首先来看看它长什么样子:
下面我们来看看如何使用它。
Vue.js skeleton
为了学习如何使用基于OAuth的API,我们首先需要一个Vue.js skeleton,或者至少需要一个能使用OAuth2 API的应用。
假如你已经有了GitHub的账户,我们可以使用它的API,当然别的基于OAuth的API也是可以的。
GitHub API提供了一个端口(/user/starred)列出了用户的所有的repositories。这个端口是需要authentication的,所以听起来是一个很好的使用场景。
下面是一个简单的应用代码:
<!DOCTYPE html> <html> <body> <div id="app"> <main v-if="user"> <h1>Latest repositories starred</h1> <ul> <li v-for="repository in repositories"> <a :href="repository.html_url" target="_blank">{{repository.name}}</a> </li> </ul> <p v-if="repositories.length === 0">Whoa, such empty!</p> </main> <div v-else> <button @click.prevent="connect">Connect to GitHub</button> </div> </div> <!-- Pizzly.js --> <script src="https://cdn.jsdelivr.net/npm/pizzly-js@v0.2.7/dist/index.umd.min.js"></script> <!-- Vue.js (developement) --> <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> <script> var app = new Vue({ el: '#app', data: { user: null, repositories: [] } }) </script> </body> </html>
这个应用代码是一个很简单的Vue.js,假如user变量已经设置了,就会显示repositories的内容个,否则就要求用户连接GitHub。
认证的部分
我们使用开源的Pizzly,它使用了.connect的方法来从前端触发认证。我们来看看如何在上面代码中加入这个内容:
var app = new Vue({ el: "#app", data: { user: null, repositories: [] }, mounted: function() { // Here we initialize Pizzly. this.$pizzly = new Pizzly({ host: "pushtogsheet.herokuapp.com", publishableKey: "pope8Qy8qfYyppnHRMgLMpQ8MuEUKDGeyhfGCj" }); // I'm using my own instance of Pizzly which is hosted on Heroku. // Create yours for free and in a few clicks by following // https://github.com/Bearer/Pizzly#getting-started }, methods: { connect: function() { // Here, we create a new method // that "connect" a user to GitHub this.$pizzly .integration('github') .connect() .then(this.connectSuccess) .catch(this.connectError); }, connectSuccess: function(data) { // On success, we update the user object this.user = data.authId; console.log('Successfully logged in!') }, connectError: function (err) { console.error(err) alert("Something went wrong. Look at the logs.") } } });
是不是很简单,只要几行代码就完成了。
配置部分
在上面的代码中有一个最重要的部分就是Pizzly的初始化,这里就要提到Pizzly其实需要一个Oauth Manager,也就是说你需要把它托管在某一个地方,比如Heroku等。当这个托管完成之后,你就可以使用Pizzly的仪表板了,这也是你配置你的GitHub的地方:
总结
这样你就可以在Vue.js中使用任何基于OAuth的API了,关于任何Pizzly的意见,欢迎大家提出。
参考文章:https://hackernoon.com/connecting-vuejs-with-oauth-based-api-ks1v3ucj
Recent Comments