| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246 |
- #include "facebook.h"
- #ifdef __ANDROID__
- #include "android/AndroidFacebook.h"
- #elif __APPLE__
- #include <TargetConditionals.h>
- #include "ios/iosFacebook.h"
- #else
- #include "sim/FacebookSimulator.h"
- #endif
- namespace facebook
- {
- namespace internal
- {
- using namespace std;
- cbInit fInit = []() {};
- cbFree fFree = []() {};
- cbLogin fLogin = []() {};
- cbLogout fLogout = []() {};
- cbNewMeRequest fNewMeRequest = []() {};
- cbGetFriends fGetFriends = []() {};
- cbGameRequest fGameRequest = [](const string& title, const string& text, const vector<string>& dest, const string& objectID, const std::string& userData) {};
- cbIsLoggedIn fIsLoggedIn = []() {return false; };
- cbGetUserID fGetUserID = []() {return std::string(""); };
- cbGetAccessToken fGetAccessToken = []() {return std::string(""); };
- cbGetAppID fGetAppID = []() {return std::string(""); };
- }
- using namespace internal;
- spEventDispatcher _dispatcher;
- spEventDispatcher dispatcher()
- {
- return _dispatcher;
- }
- void init()
- {
- #ifdef __ANDROID__
- fInit = jniFacebookInit;
- fFree = jniFacebookFree;
- fLogin = jniFacebookLogin;
- fLogout = jniFacebookLogout;
- fNewMeRequest = jniFacebookNewMeRequest;
- fGetFriends = jniFacebookGetFriends;
- fIsLoggedIn = jniFacebookIsLoggedIn;
- fGetUserID = jniFacebookGetUserID;
- fGetAccessToken = jniFacebookGetAccessToken;
- fGetAppID = jniFacebookGetAppID;
- fGameRequest = jniFacebookGameRequest;
- #elif TARGET_OS_IPHONE
- fInit = iosFacebookInit;
- fFree = iosFacebookFree;
- fLogin = iosFacebookLogin;
- fLogout = iosFacebookLogout;
- fNewMeRequest = iosFacebookRequestMe;
- fGetFriends = []() {OX_ASSERT(0); };
- fIsLoggedIn = []() {OX_ASSERT(0); return false; };
- fGetUserID = iosFacebookGetUserID;
- fGetAccessToken = iosFacebookGetAccessToken;
- fGetAppID = []() {OX_ASSERT(0); return std::string(""); };
- fGameRequest = iosFacebookGameRequest;
- #else
- fInit = facebookSimulatorInit;
- fLogin = facebookSimulatorLogin;
- fLogout = facebookSimulatorLogout;
- fNewMeRequest = facebookSimulatorNewMeRequest;
- fGetFriends = facebookSimulatorGetFriends;
- fIsLoggedIn = facebookSimulatorIsLoggedIn;
- fGetUserID = facebookSimulatorGetUserID;
- fGetAccessToken = facebookSimulatorGetAccessToken;
- fGetAppID = facebookSimulatorGetAppID;
- #endif
- log::messageln("facebook::init");
- OX_ASSERT(_dispatcher == 0);
- _dispatcher = new EventDispatcher;
- fInit();
- log::messageln("facebook::init done");
- }
- void free()
- {
- log::messageln("facebook::free");
- OX_ASSERT(_dispatcher);
- fFree();
- _dispatcher->removeAllEventListeners();
- _dispatcher = 0;
- log::messageln("facebook::free done");
- }
- void login()
- {
- log::messageln("facebook::login");
- fLogin();
- log::messageln("facebook::login done");
- }
- void logout()
- {
- log::messageln("facebook::logout");
- fLogout();
- log::messageln("facebook::logout done");
- }
- bool appInviteDialog(const string& appLinkUrl, const string& previewImageUrl)
- {
- log::messageln("facebook::AppInviteDialog");
- #ifdef __ANDROID__
- return jniFacebookAppInviteDialog(appLinkUrl, previewImageUrl);
- #elif TARGET_OS_IPHONE
- #else
- return facebookSimulatorAppInviteDialog(appLinkUrl, previewImageUrl);
- #endif
- return false;
- }
- void newMeRequest()
- {
- log::messageln("facebook::newMeRequest");
- fNewMeRequest();
- log::messageln("facebook::newMeRequest done");
- }
- void gameRequest(const string& title, const string& text, const vector<string>& dest, const string& objectID, const string& userData)
- {
- fGameRequest(title, text, dest, objectID, userData);
- }
- void getFriends()
- {
- log::messageln("facebook::getFriends");
- fGetFriends();
- log::messageln("facebook::getFriends done");
- }
- bool isLoggedIn()
- {
- log::messageln("facebook::isLoggined");
- return fIsLoggedIn();
- }
- string getAccessToken()
- {
- log::messageln("facebook::getAccessToken");
- string token = fGetAccessToken();
- log::messageln("%s", token.c_str());
- return token;
- }
- string getUserID()
- {
- log::messageln("facebook::getUserID");
- string id = fGetUserID();
- log::messageln("%s", id.c_str());
- return id;
- }
- string getAppID()
- {
- return fGetAppID();
- }
- namespace internal
- {
- void newToken(const string& value)
- {
- log::messageln("facebook::internal::newToken %s", value.c_str());
- TokenEvent ev;
- ev.token = value;
- if (_dispatcher)
- _dispatcher->dispatchEvent(&ev);
- }
- void loginResult(bool value)
- {
- log::messageln("facebook::internal::loginResult %d", value);
- LoginEvent ev;
- ev.isLoggedIn = value;
- if (_dispatcher)
- _dispatcher->dispatchEvent(&ev);
- }
- void newMeRequestResult(const string& data, bool error)
- {
- log::messageln("facebook::internal::newMeRequestResult %s", data.c_str());
- NewMeRequestEvent event;
- Json::Reader reader;
- Json::Value root;
- bool parsingSuccessful = reader.parse(data.c_str(), root); //parse process
- if (!parsingSuccessful || error)
- {
- event.error = true;
- log::messageln("newMeRequestResult error %s", error ? "response error" : "parse error");
- return;
- }
- else
- {
- event.id = root["id"].asCString();
- //event.link = root["link"].asCString();
- event.name = root["name"].asCString();
- }
- if (_dispatcher)
- _dispatcher->dispatchEvent(&event);
- }
- void newMyFriendsRequestResult(const string& data, bool error)
- {
- log::messageln("facebook::internal::newMyFriendsRequestResult %s", data.c_str());
- }
- void gameRequestResult(const string& id, bool canceled)
- {
- log::messageln("facebook::internal::gameRequestResult %s", id.c_str());
- GameRequestEvent ev(id, canceled);
- if (_dispatcher)
- _dispatcher->dispatchEvent(&ev);
- }
- }
- }
|