gpt4 book ai didi

php - 如何使用 Angular 和 Ionic 将 Facebook 用户数据保存到 MySql 数据库

转载 作者:可可西里 更新时间:2023-11-01 06:30:43 25 4
gpt4 key购买 nike

我正在开发一个 Ionic 应用程序,我在其中实现了 native Facebook 登录(遵循本教程 -> https://ionicthemes.com/tutorials/about/native-facebook-login-with-ionic-framework )。如您所见,Facebook 数据现在存储在本地存储中。我需要将此数据保存在我的 MySql 数据库中。

我让它正常工作,没有任何问题。现在我想将 Facebook 用户数据存储到我的 MySql 数据库中。

基本上,我不确定将我的 http 请求放在哪里以将数据传递到我的数据库,或者甚至不知道如何明智地进行编码。

我应该提到我已经设置了一个后端(用 bootstrap、html、css、js php 和 mysql 编码)。

所以我的用户的 url 是这样的:http://www.xxxxx.com/user.php

我的部分 Controller 代码:

app.controller('LoginCtrl', function($scope, $state, $q, UserService, $ionicLoading) {
// This is the success callback from the login method
var fbLoginSuccess = function(response) {
if (!response.authResponse){
fbLoginError("Cannot find the authResponse");
return;
}

var authResponse = response.authResponse;

getFacebookProfileInfo(authResponse)
.then(function(profileInfo) {
// For the purpose of this example I will store user data on local storage
UserService.setUser({
authResponse: authResponse,
userID: profileInfo.id,
name: profileInfo.name,
email: profileInfo.email,
picture : "http://graph.facebook.com/" + authResponse.userID + "/picture?type=large"
});
$ionicLoading.hide();
$state.go('app.dashboard');
}, function(fail){
// Fail get profile info
console.log('profile info fail', fail);
});
};

// This is the fail callback from the login method
var fbLoginError = function(error){
console.log('fbLoginError', error);
$ionicLoading.hide();
};

// This method is to get the user profile info from the facebook api
var getFacebookProfileInfo = function (authResponse) {
var info = $q.defer();

facebookConnectPlugin.api('/me?fields=email,name&access_token=' + authResponse.accessToken, null,
function (response) {
console.log('logging facebook response',response);
info.resolve(response);
},
function (response) {
console.log(response);
info.reject(response);
}
);
return info.promise;
};

//This method is executed when the user press the "Login with facebook" button
$scope.facebookSignIn = function() {
facebookConnectPlugin.getLoginStatus(function(success){
if(success.status === 'connected'){
// The user is logged in and has authenticated your app, and response.authResponse supplies
// the user's ID, a valid access token, a signed request, and the time the access token
// and signed request each expire
console.log('getLoginStatus', success.status);

// Check if we have our user saved
var user = UserService.getUser('facebook');

if(!user.userID){
getFacebookProfileInfo(success.authResponse)
.then(function(profileInfo) {
// For the purpose of this example I will store user data on local storage
UserService.setUser({
authResponse: success.authResponse,
userID: profileInfo.id,
name: profileInfo.name,
email: profileInfo.email,
picture : "http://graph.facebook.com/" + success.authResponse.userID + "/picture?type=large"
});
$state.go('app.dashboard');
}, function(fail){
// Fail get profile info
console.log('profile info fail', fail);
});
}else{
$state.go('app.dashboard');
}
} else {
// If (success.status === 'not_authorized') the user is logged in to Facebook,
// but has not authenticated your app
// Else the person is not logged into Facebook,
// so we're not sure if they are logged into this app or not.

console.log('getLoginStatus', success.status);

$ionicLoading.show({
template: 'Logging in...'
});

// Ask the permissions you need. You can learn more about
// FB permissions here: https://developers.facebook.com/docs/facebook-login/permissions/v2.4
facebookConnectPlugin.login(['email', 'public_profile'], fbLoginSuccess, fbLoginError);
}
});
};
})

我的service.js代码(本地存储)

angular.module('Challenger.services', [])

.service('UserService', function() {
// For the purpose of this example I will store user data on ionic local storage but you should save it on a database
var setUser = function(user_data) {
window.localStorage.starter_facebook_user = JSON.stringify(user_data);
};

var getUser = function(){
return JSON.parse(window.localStorage.starter_facebook_user || '{}');
};

return {
getUser: getUser,
setUser: setUser
};
});

最佳答案

我的建议是简单地使用来自 JavaScript 的 JSON ajax PUT 或 POST。例如,假设后端主机为 example.com

添加 CSP到 Ionic HTML,例如:

<meta http-equiv="Content-Security-Policy" content="default-src http://example.com; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'">

将域添加到 whitelist在 Cordova config.xml 中:

<access origin="http://example.com" />

然后您可以在 Angular Controller 中使用 ajax 从 JavaScript 调用 PHP(我在这里使用 jQuery,但您可以使用任何 JavaScript ajax 库):

var data = {
authResponse: authResponse,
userID: profileInfo.id,
name: profileInfo.name,
email: profileInfo.email,
picture : "http://graph.facebook.com/" + authResponse.userID + "/picture?type=large"
};

$.post( "http://example.com/login.php", data, function(returnData, status) {
console.log('PHP returned HTTP status code', status);
});

最后,在 PHP 方面——例如login.php — 使用 $_POST['userId']$_POST['email'] 等访问发布数据

关于php - 如何使用 Angular 和 Ionic 将 Facebook 用户数据保存到 MySql 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38617047/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com