2015년 12월 17일 목요일

SavingAndLoadingProfileCloud

Emotive Cloud 에 Profile 저장하고 읽어오는 예제

API 문서 : https://emotiv.com/api/3.3.0/_emotiv_cloud_client_8h.html
위치 : community-sdk/example/C++/SavingAndLoadingProfileCloud
기준 commit : f62b39eca2f4eeb52344c9be1c3bc374e9917409
컴파일 : 정상
실행 : 비정상 (workaround 와 함께 동작할 수는 있음)
결과물 : 표준 출력 로그 (cloud 통신)

굳이 cloud 에 내 정보를 저장해야 하는지 의문이 들지만 있는 기능이니 코드를 살펴보면,

...
36 int main() {
37 std::string userName = "Your account name";
38 std::string password = "Your password";
39 std::string profileName = "EmotivProfile";
...
72 if(!EC_Connect())
...
78 if(!EC_Login(userName.c_str(), password.c_str()))
...
87 if (!EC_GetUserDetail(&userCloudID))
...
120 else if (EC_SaveUserProfile(userCloudID, (int)engineUserID, profileName.c_str(),
121 TRAINING))
...
133 if (EC_LoadUserProfile(userCloudID, (int)engineUserID, EC_ProfileIDAtIndex(userCloudID, 0)))
...

1. 본인 계정을 userName 과 password 에 하드 코딩해 줌 (보안이라고는 신경안쓰는...코드)
2. EC_ prefix API 들로 connect / login 해서 user 의 detail 을 얻어 온다.
3. 저장을 원하면 Save, 읽어 오기를 원하면 Load 를 한다.

컴파일을 해서 실행을 해 보면 아래와 같은 에러를 뱉으면서 종료 된다.
Exception: handshake: certificate verify failed
Your login attempt has failed. The username or password may be incorrect

github 에 이 문제를 issue 로 등록 했더니 담당자가 자기들의 문제점을 인지 했고, 일단 사용할 수 있는 workaround 를 알려 줬다.
>> issue 링크 : https://github.com/Emotiv/community-sdk/issues/60

조만간 해결 되겠지만 당장 테스트 해 보려면 /usr/share/ca-certificates/ 에 있는 파일들을
/usr/local/share/ca-certificates/ 에 복사 하면 된다.

[컴파일 방법]
$ cmake .
$ make

[실행 방법]
$ ./SavingAndLoadingProfileCloud

[결과물]
==================================================================
Example to saving and loading profile from Emotiv Cloud
==================================================================
Press '1' to saving profile to Emotiv Cloud
Press '2' to loading profile from Emotiv Cloud
>> 1
login success {"access_token": "XXXX", "token_type": "Bearer", "expires_in": xxxx, "refresh_token": "xxxx", "scope": "read write groups"}
user detail {"id":xxxx,"user":{"username":"xxxx,"email":"xxxx","id":xxxx,"first_name":"xxxx","last_name":"xxxx","date_joined":"xxxx","last_login":"xxxx"},"citizenship":{"iso":"xx","name":"xxxx"},"resident_country":{"iso":"xx","name":"xxxx"},"country":{"iso":"xx","name":"xxxx"},"attributes":[],"photo_url":"","favorites":[],"total_eeg_duration":0,"brain_bias":xxxx,"oidc_user":{"username":"xxxx","preferred_username":"xxxx","sub":"xxxx","issuer":"xxxx"},"last_baseline_recorded":null,"medical_record_id":null,"external_user_id":null,"date_of_birth":"xxxx","sex":"x","state":" ","city":" ","photo":null}

Saving 과 Loading 의 로그 출력이 동일해서 하나만 적었다.개인 정보가 표시 되기 때문에 모두 x 로 변경 했다.

정리하면,
현재 버전에서는 workaround 를 통한 실행이 가능하다.

댓글 없음: