2017-12-26 19 views
0

나는 나무 딸기 파이에서 실행하고 firebase 데이터베이스에 연결하는 응용 프로그램을 만들려고합니다. 이 응용 프로그램을 C++로 작성했으며 간단한 방법이 있는지 궁금합니다.C++ Firebase 래퍼?

import pyrebase 

def firbaseLogIn(): 
    directory = os.getcwd() 
    serviceAccount = directory + "xxx.json" 

    config = { 
     "apiKey": "xxx", 
     "authDomain": "xxxx", 
     "databaseURL": "https://example.com", 
     "projectId": "xxxx", 
     "storageBucket": "xx.example.com", 
     "serviceAccount": serviceAccount 
    } 

    firebase = pyrebase.initialize_app(config) 

    # Log the user in 
    email = "[email protected]" 
    password = "xxx" 

    auth = firebase.auth() 
    user = auth.sign_in_with_email_and_password(email, password) 


    # Get a reference to the database service 
    db = firebase.database() 

    # Pass the user's idToken to the push method 
    userInfo = db.child("users").child(user['localId']).get() 
    print(userInfo.val()) 

    return; 

을하고 그것을 잘 작동합니다 :

나는 모듈 Pyrebase 파이썬에서 그것을했다. 그러나 내가 C++ SDK와 비슷한 것을하려고 할 때, 문서를 따라 가면 앱이 작동하지 않습니다. 그것이 IOS 게임 (실제로 당신이 Xcode가 필요하다고 말한 것) 또는 문서를 올바르게 따라갈 수 없기 때문에 그것이 작동하는지 알 수 없습니다. 코드에서 오류가 발생하지 않습니다. 그것은 내가 올바르게 서명했지만 사용자 정보가 정확하지 않은 것을 인쇄합니다. 예를 들어, UID는 전자 메일이며 전화 번호는 1-888-897-5309로 명확하지 않습니다.

이것은 내가 C++로 시도한 것입니다 :

#include "firebase/app.h" 

firebase::App* configureFirebaseApp(std::string appcwd){ 

    std::string stringAppID = appcwd + "xxx.json"; 
    const char* appID = &stringAppID[0]; 

    firebase::AppOptions appOptions = firebase::AppOptions(); 
    appOptions.set_api_key("xxx"); 
    appOptions.set_database_url("https://xxx.xxx.com"); 
    appOptions.set_project_id("xxx"); 
    appOptions.set_storage_bucket("xxxxx.xxxx.com"); 
    appOptions.set_app_id(appID); 

    return firebase::App::Create(appOptions); 
} 

#include "firebase/auth.h" 

void FirebaseLogIn(std::string appcwd){ 

    const char email[] = "[email protected]"; 
    const char password[] = "xxxxx"; 

    std::cout<<"Configuring app...\n"; 
    firebase::App* app = configureFirebaseApp(appcwd); 

    // Get the Auth class for your App. 
    firebase::auth::Auth* auth = firebase::auth::Auth::GetAuth(app); 

    std::cout<<"Signing in...\n"; 
    // Request anonymous sign-in and wait until asynchronous call completes. 
    firebase::Future<firebase::auth::User*> result = 
     auth->SignInWithEmailAndPassword(email, password); 

    if (result.status() == firebase::kFutureStatusComplete) { 
     if (result.error() == firebase::auth::kAuthErrorNone) { 
     firebase::auth::User* user = *result.result(); 
     printf("Log in user succeeded for email %s\n", user->email().c_str()); 
     std::cout << "Name: " << user->display_name() << std::endl; 
     std::cout << "uid: " << user->uid() << std::endl; 
     std::cout << "email: " << user->email() << std::endl; 
     std::cout << "phone number: " << user->phone_number() << std::endl; 
     } else { 
     printf("Log in user failed with error '%s'\n", result.error_message()); 
     } 
    } 

당신이 줄 수있을 수있는 모든 도움을 주셔서 감사합니다.

답변

0

공식 Firebase SDK for C++는 기본 Android 및 iOS SDK를위한 래퍼입니다. 따라서 해당 플랫폼에서만 실행됩니다.

다른 플랫폼을 타겟팅하는 경우 다른 라이브러리가 필요합니다. 전형적으로 그러한 라이브러리는 특정 제품의 파이어베이스 REST API (파이레베이스가 귀하의 경우 데이터베이스를 대신합니다)를 포장하기 때문에 플랫폼간에 작업 할 확률이 높아집니다.