2013-02-17 2 views
0

Facebook에 로그인 할 수있게 해주는 webapp을 작성하고 있습니다. Phonegap 및 Phonegap Facebook 플러그인을 사용하고 있습니다. 그런 다음 로그인 한 사용자 이름과 ID를 저장하려고합니다. 간단한 테스트로 시작하려면 다음 컨트롤러를 사용하여 ID를 수집하고 xcode 콘솔에 표시하여 해당 컨트롤러가 있는지 확인한 다음 아래의 PHP 코드로 보내서 mysql 테이블에 저장하십시오. 나는 그것을 작동시키는 것처럼 보일 수없고 아마도 $ http.post 내의 {}에있는 나의 데이터의 형식 일 것이라고 생각하지만 이것은 현재 나의 지식을 뛰어 넘는 것일뿐입니다. 어떤 아이디어?AngularJS 님이 PHP mysql insert에 데이터를 게시했습니다.

function FacebookCtrl($scope) { 
    FB.api('/me', function(response) { 
     var fbid=response.id; 
     console.log('Testing, ' + fbid + '.'); 
     $http.post('http://somedomain.co.uk/php/users.php', {uid: fbid}) 
     console.log('Complete'); 
    }); 
} 

수신 측에서 PHP 코드는 다음과 같습니다

<?php 
    $data = file_get_contents("php://input"); 
    $objData = json_decode($data); 

    $uid = $objData->uid; 

    try { 
     include 'database.php'; 
     $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    $stmt = $conn->prepare('INSERT INTO Userdata (oauth_uid) VALUES (:userid)'); 
    $stmt->execute(array(
      ':userid' => $uid, 
    )); 
    } catch(PDOException $e) { 
     echo 'ERROR: ' . $e->getMessage(); 
    } 
?> 

차이가 다른 컨트롤러가 양식에서 전달 된 데이터를 캡처된다 그러나 같은 PHP 코드 내 컨트롤러의 또 다른 하나의 작동하므로 http.post은 다음과 같습니다

$http.post('http://somedomain.co.uk/php/submitdata.php', {Position1: $scope.position1} 

그리고이 데이터를 캡처 PHP의 코드는 다음과 같습니다

$Position1 = $objData->Position1->Name; 

코드가 다른 컨트롤러에서 모두 작동하므로이 문제가 {} 사이를 통과하는 데이터의 서식을 지정하는 것과 관련되어 있다고 가정합니다.

+1

Chrome 또는 Mozilla를 방화범이 끌 렸는데 사용중인 경우 사용자를 게시 할 때 '네트워크'탭에서 어떤 상황이 발생했는지 알려주실 수 있습니까? – Maksym

+0

당신의 충고에 따라 웹 호스팅 버전의 facebook 요소없이 파일을 만들었지 만 동일한 정보를 전달하는 변수를 간단하게 만들었습니다. 작동하여 데이터베이스에 항목을 저장했습니다. 이 문제는 제 컨트롤러의이 줄과 관련이 있다고 생각합니다 : '$ http.post ('http://somedomain.co.uk/php/users.php', {uid : fbid}); ' 그리고 내 php에서 이러한 라인 : '$ 데이터 = file_get_contents ("php : // 입력"),' '$ objData = json_decode ($ 데이터);' '$ uid = $ objData-> uid; ' – AdrianBorkala

+0

문제는 xcode에서 PHP 파일의 응답을 확인하는 방법을 찾을 수 없다는 것입니다. – AdrianBorkala

답변

1

는 성공 \ 오류 콜백

$http.post("http://somedomain.co.uk/php/users.php", {uid: fbid}) 
    .success(function(data, status, headers, config) { 
     $scope.data = data; 
    }).error(function(data, status, headers, config) { 
     $scope.status = status; 
    }); 

그 다음 무엇을 말할 것이다을 정의하려고?

+0

도움에 감사드립니다. 나는 이것을했는데 console.log 메시지를 성공을 위해 추가하고 하나는 오류를 위해 추가했지만 콘솔에서 메시지를 얻지는 못한다. 나는 전에 http.post 앞에 추가 한 console.log 문에 대한 메시지를 얻었으므로 이전에 행이 실행되고 있지만이 행이 어떤 이유로 실행되지 않는 것처럼 보일 수 있습니다. – AdrianBorkala

+0

나는 밖으로 나왔다. ... 성공/오류 콜백을 추가하라는 제안은 아무 것도 없기 때문에 컨트롤러의 첫 줄에 $ scope와 $ http를 포함시키지 않은 것으로 나타났습니다. 그것을 추가하고 즉시 성공을 얻었다. 올바른 답변을 얻을 수 있도록 도와 주셔서 감사합니다. :영형) – AdrianBorkala

관련 문제