|
@@ -37,6 +37,14 @@
|
|
|
</div>
|
|
|
<div class="col-12 q-pa-md">
|
|
|
<q-btn color="primary" @click="login()" label="Login" />
|
|
|
+ <q-btn
|
|
|
+ icon="lab la-facebook"
|
|
|
+ color="blue-6"
|
|
|
+ dense
|
|
|
+ rounded
|
|
|
+ class="q-ma-sm"
|
|
|
+ @click="goToFacebookLogin"
|
|
|
+ />
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
@@ -44,7 +52,7 @@
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
-import { ref, onMounted, getCurrentInstance } from "vue";
|
|
|
+import { ref, onMounted, onBeforeMount, getCurrentInstance } from "vue";
|
|
|
import { useQuasar } from "quasar";
|
|
|
import { api } from "boot/axios";
|
|
|
import Qs from "qs";
|
|
@@ -97,12 +105,117 @@ export default {
|
|
|
});
|
|
|
}
|
|
|
|
|
|
+ function goToFacebookLogin() {
|
|
|
+ FB.login(
|
|
|
+ function (response) {
|
|
|
+ // handle the response
|
|
|
+ if (response.authResponse) {
|
|
|
+ var accessToken = response.authResponse.accessToken;
|
|
|
+
|
|
|
+ // get my info and set
|
|
|
+ FB.api(
|
|
|
+ "/me",
|
|
|
+ "GET",
|
|
|
+ { fields: "id,name,email,picture" },
|
|
|
+ function (response) {
|
|
|
+ // try login using the oauth way
|
|
|
+ const params = {};
|
|
|
+ params.accessToken = accessToken;
|
|
|
+ params.id = response.id;
|
|
|
+ params.email = response.email;
|
|
|
+ params.name = response.name;
|
|
|
+ params.profileImageUrl = response.picture.data.url;
|
|
|
+
|
|
|
+ this.loading = true;
|
|
|
+ var data = {
|
|
|
+ username:
|
|
|
+ response.id +
|
|
|
+ "," +
|
|
|
+ response.name +
|
|
|
+ "," +
|
|
|
+ response.email +
|
|
|
+ "," +
|
|
|
+ response.picture.data.url,
|
|
|
+ password: accessToken,
|
|
|
+ };
|
|
|
+
|
|
|
+ api
|
|
|
+ .post("/login", Qs.stringify(data), {
|
|
|
+ headers: {
|
|
|
+ "Content-Type": "application/x-www-form-urlencoded",
|
|
|
+ },
|
|
|
+ })
|
|
|
+ .then((response) => {
|
|
|
+ location.reload();
|
|
|
+ })
|
|
|
+ .catch((e) => {
|
|
|
+ gp.$generalNotify($q, false, "Error message: " + e);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ );
|
|
|
+ } else {
|
|
|
+ console.log("User cancelled login or did not fully authorize.");
|
|
|
+ gp.$generalNotify(
|
|
|
+ $q,
|
|
|
+ false,
|
|
|
+ "User cancelled login or did not fully authorize."
|
|
|
+ );
|
|
|
+ }
|
|
|
+ },
|
|
|
+ { scope: "email" }
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ function initFacebookSDK() {
|
|
|
+ // Load the Facebook SDK asynchronously
|
|
|
+ const loadFacebookSDK = new Promise((resolve) => {
|
|
|
+ window.fbAsyncInit = function () {
|
|
|
+ FB.init({
|
|
|
+ appId: "994181467335802",
|
|
|
+ autoLogAppEvents: true,
|
|
|
+ xfbml: true,
|
|
|
+ version: "v13.0",
|
|
|
+ });
|
|
|
+ resolve();
|
|
|
+ };
|
|
|
+ });
|
|
|
+
|
|
|
+ // Load the SDK script
|
|
|
+ (function (d, s, id) {
|
|
|
+ var js,
|
|
|
+ fjs = d.getElementsByTagName(s)[0];
|
|
|
+ console.log("js");
|
|
|
+ console.log(js);
|
|
|
+ console.log("fjs");
|
|
|
+ console.log(fjs);
|
|
|
+ if (d.getElementById(id)) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ js = d.createElement(s);
|
|
|
+ js.id = id;
|
|
|
+ js.src = "https://connect.facebook.net/en_US/sdk.js";
|
|
|
+ fjs.parentNode.insertBefore(js, fjs);
|
|
|
+ })(document, "script", "facebook-jssdk");
|
|
|
+
|
|
|
+ // Wait for the SDK to be loaded
|
|
|
+ loadFacebookSDK.then(() => {
|
|
|
+ console.log("facebook sdk loaded");
|
|
|
+ // You can now use the Facebook SDK methods here
|
|
|
+ // For example, authenticate the user, fetch user data, etc.
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
onMounted(() => {
|
|
|
whoami();
|
|
|
});
|
|
|
|
|
|
+ onBeforeMount(() => {
|
|
|
+ initFacebookSDK();
|
|
|
+ });
|
|
|
+
|
|
|
return {
|
|
|
login,
|
|
|
+ goToFacebookLogin,
|
|
|
username,
|
|
|
password,
|
|
|
};
|