저는 현재 yii로 마이 그 레이션을 시도하고 있습니다. (아직 새에 너무) 내 사이트에 내가이어디서 페이스 북에 아약스를 넣을 수 있습니까?
function updateButton(response) {
var b = document.getElementById("{$this->fbLoginButtonId}");
b.onclick = function(){
$("#{$this->fbLoginButtonId}").button("loading");
FB.login(function(response) {
if(response.authResponse) {
$('#processing').modal({show: true, backdrop: 'static', keyboard: false});
FB.api('/me', function(user) {
$.ajax({ type : 'post'
, url: '{$this->facebookLoginUrl}'
, data: ({ user: user })
, dataType: 'json'
, success: function(data){
if(data.error == 0){
window.location.href = data.success;
} else {
$('#processing').modal('hide');
showError(data.error);
$("#{$this->fbLoginButtonId}").button("reset");
}
}
});
});
} else { $("#{$this->fbLoginButtonId}").button("reset"); }
}, {scope: '{$this->facebookPermissions}'});
}
}
같은 라인 URL을 보이는 페이스 북 로그인 코드가 '{$ this-> facebookLoginUrl을}'은 기본적를 수행하는 파일을 가리키는 입증. YII에, 나는 보호/컨트롤러/facebookcontroller.php
class FacebookController extends Controller {
public $defaultAction = 'facebook';
public function actionFacebook() {
if (app()->request->isAjaxRequest) {
$user = app()->request->getParam('user');
Shared::debug($user);
// verify one last time that facebook knows this guy
if($user['id'] === app()->facebook->getUser()){
$model = User::model()->findByEmail($user['email']);
if(!empty($model)){
// facebook email matches one in the user database
$identity = new UserIdentity($model->email , null);
$identity->_ssoAuth = true;
$identity->authenticate();
if($identity->errorCode === UserIdentity::ERROR_NONE){
app()->user->login($identity, null);
echo json_encode(array('error' => false, 'success' => url('/')));
app()->end();
} else {
echo json_encode(array('error' => 'System Authentication Failed', 'code' => 'auth'));
app()->end();
}
} else {
// nothing found, this person should register
// write query to input into database!!!
}
} else {
// fb user id past from ajax does not match who facebook says they are...
echo json_encode(array('error' => 'Facebook Authentication Failed', 'code' => 'fb_auth'));
app()->end();
}
} else {
throw new CHttpException(403);
}
}
}
기본적으로 내가 여기 URL을 어떻게 배치해야합니까에서 해당 파일을 넣어 : '{$ this-> facebookLoginUrl}'? 나는 http://localhost/facebook.html
을 시도했지만 작동하지 않습니다. 내가 불을 지르고
<h1>PHP Error [8]</h1>
<p>Undefined index: email (/Applications/XAMPP/xamppfiles/htdocs/protected/controllers/FacebookController.php:13)</p>
<pre>#0 /Applications/XAMPP/xamppfiles/htdocs/protected/controllers/FacebookController.php(13): CWebApplication->handleError()
#1 /Applications/XAMPP/xamppfiles/htdocs/yii/web/actions/CInlineAction.php(49): FacebookController->actionFacebook()
#2 /Applications/XAMPP/xamppfiles/htdocs/yii/web/CController.php(308): CInlineAction->runWithParams()
#3 /Applications/XAMPP/xamppfiles/htdocs/yii/web/CController.php(286): FacebookController->runAction()
#4 /Applications/XAMPP/xamppfiles/htdocs/yii/web/CController.php(265): FacebookController->runActionWithFilters()
#5 /Applications/XAMPP/xamppfiles/htdocs/yii/web/CWebApplication.php(282): FacebookController->run()
#6 /Applications/XAMPP/xamppfiles/htdocs/yii/web/CWebApplication.php(141): CWebApplication->runController()
#7 /Applications/XAMPP/xamppfiles/htdocs/yii/base/CApplication.php(180): CWebApplication->processRequest()
#8 /Applications/XAMPP/xamppfiles/htdocs/index.php(25): CWebApplication->run()
</pre>
이처럼 보이는 아약스 포스트 응답에이 오류가 ..
user[birthday] MM/DD/YYYY
user[first_name] name
user[gender] male
user[hometown][id] 106031246101856
user[hometown][name] CITY, STATE
user[id] 598482999
user[last_name] LASTNAME
user[link] https://www.facebook.com/ID
user[locale] en_US
user[location][id] 106031246101856
user[location][name] CITY, STATE
user[middle_name] MIDDLENAME
user[name] FULLNAME
user[timezone] -8
user[updated_time] 2013-12-15T16:43:03+0000
user[username] USERNAME
user[verified] true
'urlSuffix'=> '. html''로 설정하고 내 파일은'localhost/facebook.php'에 있습니다. 404 오류가 발생하지 않습니다. POST가 위와 같습니다. DB에 어떻게 써야합니까? – user2636556
yii에 따라 기존 코드를 편집하려고합니다. 올바른 방법은 yii에서 새로운 코드로 동일한 논리를 작성하는 것입니다. 같은 접근법을 사용한다면 왜 Yii입니까? – Hemc
나는 내가 여전히 yii에 처음 온다고 말했다. 하지만 테스트 목적을 위해 나는 메인 디렉토리에 넣었다. 만약 내가 그것을'controller/facebook.php'에 넣으면 여전히 문제가 남아 있습니다. db에 어떻게 써야합니까? 어떻게 내 facebook.php는'protected/controllers/facebookcontroller.php' (위의 코드)에서'actionFacebook()'을 호출할까요? – user2636556