SDKBOX facebook onLogin listener not working

I dont know what I am doing wrong, but my facebook listeners ONlogin, onAPI , onPermission etc are not triggering after login. Even straight logic as below is not working… I tried also in app.js.

Facebook logic is working, but the listeners are not…

sdkbox.PluginFacebook.init();
sdkbox.PluginFacebook.setListener({
  onLogin: function () {
    console.log("Login listener called");
  },
  onPermission: function () {
    console.log("onPermission listener called");
});


sdkbox.PluginFacebook.login();

//I tried this also
sdkbox.PluginFacebook.requestReadPermissions(['user_friends']);

Try setListener() before init()

I tried that, but didn’t work. Only onLogin and onPermission callbacks are not working. Could you help me on that?

Let me try and tell you

for ios:

http://docs.sdkbox.com/en/plugins/facebook/v3-js/#setup-ios

But the only problem I have is onLogin or onPermission callbacks are not working still. Other callbacks like onAPI works fine. Could I be missed anything on setting up for login alone?

plz help to check AppController.mm:

do you have bellow codes:

#import <FBSDKCoreKit/FBSDKCoreKit.h>

- (BOOL)application:(UIApplication *)application
    didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

  //
  // **************************
  // !! IMPORTANT !!
  // **************************
  //
  // call [[FBSDKApplicationDelegate sharedInstance] application:didFinishLaunchingWithOptions
  // before app->run()

  [[FBSDKApplicationDelegate sharedInstance] application:application
    didFinishLaunchingWithOptions:launchOptions];

  app->run();

  return YES;
}

- (BOOL)application:(UIApplication *)application
            openURL:(NSURL *)url
            options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {

  BOOL handled = [[FBSDKApplicationDelegate sharedInstance] application:application
    openURL:url
    sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey]
    annotation:options[UIApplicationOpenURLOptionsAnnotationKey]
  ];
  // Add any custom logic here.
  return handled;
}

- (BOOL)application:(UIApplication *)application
            openURL:(NSURL *)url
  sourceApplication:(NSString *)sourceApplication
         annotation:(id)annotation {

  BOOL handled = [[FBSDKApplicationDelegate sharedInstance] application:application
    openURL:url
    sourceApplication:sourceApplication
    annotation:annotation
  ];
  // Add any custom logic here.
  return handled;
}

Sorry! Im working on Android, Here’s my AppDelegate.cpp

#include "AppDelegate.h"
#ifdef SDKBOX_ENABLED
#include "SDKBoxJSHelper.h"
#include "PluginFacebookJS.hpp"
#include "PluginFacebookJSHelper.h"
#endif
// #include "scripting/js-bindings/auto/jsb_cocos2dx_3d_auto.hpp"
// #include "scripting/js-bindings/auto/jsb_cocos2dx_3d_extension_auto.hpp"
#include "scripting/js-bindings/auto/jsb_cocos2dx_auto.hpp"

// #include "scripting/js-bindings/auto/jsb_cocos2dx_builder_auto.hpp"
#include "scripting/js-bindings/auto/jsb_cocos2dx_extension_auto.hpp"

#include "scripting/js-bindings/auto/jsb_cocos2dx_network_auto.hpp"

// #include "scripting/js-bindings/auto/jsb_cocos2dx_navmesh_auto.hpp"
// #include "scripting/js-bindings/auto/jsb_cocos2dx_physics3d_auto.hpp"
// #include "scripting/js-bindings/auto/jsb_cocos2dx_spine_auto.hpp"
// #include "scripting/js-bindings/auto/jsb_cocos2dx_studio_auto.hpp"
#include "scripting/js-bindings/auto/jsb_cocos2dx_ui_auto.hpp"
// #include "scripting/js-bindings/manual/3d/jsb_cocos2dx_3d_manual.h"
// #include "scripting/js-bindings/manual/chipmunk/js_bindings_chipmunk_registration.h"
// #include "scripting/js-bindings/manual/cocosbuilder/js_bindings_ccbreader.h"
// #include "scripting/js-bindings/manual/cocostudio/jsb_cocos2dx_studio_manual.h"
#include "scripting/js-bindings/manual/extension/jsb_cocos2dx_extension_manual.h"
// #include "scripting/js-bindings/manual/jsb_opengl_registration.h"

#include "scripting/js-bindings/manual/localstorage/js_bindings_system_registration.h"

// #include "scripting/js-bindings/manual/navmesh/jsb_cocos2dx_navmesh_manual.h"
#include "scripting/js-bindings/manual/network/XMLHTTPRequest.h"
// #include "scripting/js-bindings/manual/network/jsb_socketio.h"

#include "PluginFacebookJS.hpp"
#include "PluginFacebookJSHelper.h"
#include "PluginSdkboxPlayJS.hpp"
#include "PluginSdkboxPlayJSHelper.h"
#include "PluginFirebaseJS.hpp"
#include "PluginFirebaseJSHelper.h"
#include "PluginOneSignalJS.hpp"
#include "PluginOneSignalJSHelper.h"
// #include "scripting/js-bindings/manual/network/jsb_websocket.h"
// #include "scripting/js-bindings/manual/physics3d/jsb_cocos2dx_physics3d_manual.h"
// #include "scripting/js-bindings/manual/spine/jsb_cocos2dx_spine_manual.h"

#include "scripting/js-bindings/manual/ui/jsb_cocos2dx_ui_manual.h"

#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID || CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
// #include "scripting/js-bindings/auto/jsb_cocos2dx_experimental_video_auto.hpp"
// #include "scripting/js-bindings/auto/jsb_cocos2dx_experimental_webView_auto.hpp"
// #include "scripting/js-bindings/manual/experimental/jsb_cocos2dx_experimental_video_manual.h"
// #include "scripting/js-bindings/manual/experimental/jsb_cocos2dx_experimental_webView_manual.h"
#endif

#if (CC_TARGET_PLATFORM == CC_PLATFORM_WINRT || CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID || CC_TARGET_PLATFORM == CC_PLATFORM_IOS || CC_TARGET_PLATFORM == CC_PLATFORM_MAC || CC_TARGET_PLATFORM == CC_PLATFORM_WIN32)
#include "scripting/js-bindings/auto/jsb_cocos2dx_audioengine_auto.hpp"
#endif

#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
#include "cocos/scripting/js-bindings/manual/platform/android/CCJavascriptJavaBridge.h"
#elif (CC_TARGET_PLATFORM == CC_PLATFORM_IOS || CC_TARGET_PLATFORM == CC_PLATFORM_MAC)
#include "cocos/scripting/js-bindings/manual/platform/ios/JavaScriptObjCBridge.h"
#endif

// #define USE_AUDIO_ENGINE 1
// #define USE_SIMPLE_AUDIO_ENGINE 1

#if USE_AUDIO_ENGINE && USE_SIMPLE_AUDIO_ENGINE
#error "Don't use AudioEngine and SimpleAudioEngine at the same time. Please just select one in your game!"
#endif

#if USE_AUDIO_ENGINE
#include "audio/include/AudioEngine.h"
using namespace cocos2d::experimental;
#elif USE_SIMPLE_AUDIO_ENGINE
#include "audio/include/SimpleAudioEngine.h"
using namespace CocosDenshion;
#endif

#include "SDKBoxJSHelper.h"
#include "sdkbox/Sdkbox.h"

USING_NS_CC;

AppDelegate::AppDelegate()
{
}

AppDelegate::~AppDelegate()
{
#if USE_AUDIO_ENGINE
    AudioEngine::end();
#elif USE_SIMPLE_AUDIO_ENGINE
    SimpleAudioEngine::end();
#endif
}

void AppDelegate::initGLContextAttrs()
{
    GLContextAttrs glContextAttrs = {8, 8, 8, 8, 24, 8, 0};

    GLView::setGLContextAttrs(glContextAttrs);
}

bool AppDelegate::applicationDidFinishLaunching()
{
#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
    sdkbox::init(SDKBOX_IOS_TOKEN, SDKBOX_IOS_SECRET);
#elif (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
    sdkbox::init(SDKBOX_ANDROID_TOKEN, SDKBOX_ANDROID_SECRET, "googleplay");
#endif
    // initialize director
    auto director = Director::getInstance();
    auto glview = director->getOpenGLView();
    if(!glview) {
#if(CC_TARGET_PLATFORM == CC_PLATFORM_WP8) || (CC_TARGET_PLATFORM == CC_PLATFORM_WINRT)
        glview = cocos2d::GLViewImpl::create("mq-mobile");
#else
        glview = cocos2d::GLViewImpl::createWithRect("mq-mobile", Rect(0,0,640,960));
#endif
        director->setOpenGLView(glview);
}

    // set FPS. the default value is 1.0/60 if you don't call this
    director->setAnimationInterval(1.0f / 60);

    ScriptingCore* sc = ScriptingCore::getInstance();
    sc->addRegisterCallback(register_all_cocos2dx);
    sc->addRegisterCallback(register_cocos2dx_js_core);
    sc->addRegisterCallback(jsb_register_system);

    // extension can be commented out to reduce the package
    sc->addRegisterCallback(register_all_cocos2dx_extension);
    sc->addRegisterCallback(register_all_cocos2dx_extension_manual);

    // chipmunk can be commented out to reduce the package
    // sc->addRegisterCallback(jsb_register_chipmunk);
    // opengl can be commented out to reduce the package
    // sc->addRegisterCallback(JSB_register_opengl);

    // builder can be commented out to reduce the package
    // sc->addRegisterCallback(register_all_cocos2dx_builder);
    // sc->addRegisterCallback(register_CCBuilderReader);

    // ui can be commented out to reduce the package, attention studio need ui module
    sc->addRegisterCallback(register_all_cocos2dx_ui);
    sc->addRegisterCallback(register_all_cocos2dx_ui_manual);

    // studio can be commented out to reduce the package,
    // sc->addRegisterCallback(register_all_cocos2dx_studio);
    // sc->addRegisterCallback(register_all_cocos2dx_studio_manual);

    // spine can be commented out to reduce the package
    // sc->addRegisterCallback(register_all_cocos2dx_spine);
    // sc->addRegisterCallback(register_all_cocos2dx_spine_manual);

    // XmlHttpRequest can be commented out to reduce the package
    sc->addRegisterCallback(MinXmlHttpRequest::_js_register);
    // websocket can be commented out to reduce the package
    // sc->addRegisterCallback(register_jsb_websocket);
    // socket io can be commented out to reduce the package
    // sc->addRegisterCallback(register_jsb_socketio);
    // Downloader
    sc->addRegisterCallback(register_all_cocos2dx_network);

    // 3d can be commented out to reduce the package
    // sc->addRegisterCallback(register_all_cocos2dx_3d);
    // sc->addRegisterCallback(register_all_cocos2dx_3d_manual);

    sc->addRegisterCallback(register_all_PluginFacebookJS);
    sc->addRegisterCallback(register_all_PluginFacebookJS_helper);

    sc->addRegisterCallback(register_all_PluginSdkboxPlayJS);
    sc->addRegisterCallback(register_all_PluginSdkboxPlayJS_helper);

    sc->addRegisterCallback(register_all_PluginFirebaseJS);
    sc->addRegisterCallback(register_all_PluginFirebaseJS_helper);

    sc->addRegisterCallback(register_all_PluginOneSignalJS);
    sc->addRegisterCallback(register_all_PluginOneSignalJS_helper);

    // 3d extension can be commented out to reduce the package
    // sc->addRegisterCallback(register_all_cocos2dx_3d_extension);

#if CC_USE_3D_PHYSICS && CC_ENABLE_BULLET_INTEGRATION
    // Physics 3d can be commented out to reduce the package
    // sc->addRegisterCallback(register_all_cocos2dx_physics3d);
    // sc->addRegisterCallback(register_all_cocos2dx_physics3d_manual);
#endif

#if CC_USE_NAVMESH
    // sc->addRegisterCallback(register_all_cocos2dx_navmesh);
    // sc->addRegisterCallback(register_all_cocos2dx_navmesh_manual);
#endif

#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID || CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
    // sc->addRegisterCallback(register_all_cocos2dx_experimental_video);
    // sc->addRegisterCallback(register_all_cocos2dx_experimental_video_manual);
    // sc->addRegisterCallback(register_all_cocos2dx_experimental_webView);
    // sc->addRegisterCallback(register_all_cocos2dx_experimental_webView_manual);
#endif

#if (CC_TARGET_PLATFORM == CC_PLATFORM_WINRT || CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID || CC_TARGET_PLATFORM == CC_PLATFORM_IOS || CC_TARGET_PLATFORM == CC_PLATFORM_MAC || CC_TARGET_PLATFORM == CC_PLATFORM_WIN32)
    sc->addRegisterCallback(register_all_cocos2dx_audioengine);
#endif

#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
    sc->addRegisterCallback(JavascriptJavaBridge::_js_register);
#elif (CC_TARGET_PLATFORM == CC_PLATFORM_IOS || CC_TARGET_PLATFORM == CC_PLATFORM_MAC)
    sc->addRegisterCallback(JavaScriptObjCBridge::_js_register);
#endif
#ifdef SDKBOX_ENABLED
    sc->addRegisterCallback(register_all_PluginFacebookJS);
    sc->addRegisterCallback(register_all_PluginFacebookJS_helper);
#endif

#ifdef SDKBOX_ENABLED
    sc->addRegisterCallback(register_all_SDKBoxJS_helper);
#endif
    sc->start();
    sc->runScript("script/jsb_boot.js");
#if defined(COCOS2D_DEBUG) && (COCOS2D_DEBUG > 0)
    sc->enableDebugger();
#endif
    ScriptEngineProtocol *engine = ScriptingCore::getInstance();
    ScriptEngineManager::getInstance()->setScriptEngine(engine);
    ScriptingCore::getInstance()->runScript("main.js");

    return true;
}

// This function will be called when the app is inactive. Note, when receiving a phone call it is invoked.
void AppDelegate::applicationDidEnterBackground()
{
    auto director = Director::getInstance();
    director->stopAnimation();
    director->getEventDispatcher()->dispatchCustomEvent("game_on_hide");

#if USE_AUDIO_ENGINE
    AudioEngine::pauseAll();
#elif USE_SIMPLE_AUDIO_ENGINE
    SimpleAudioEngine::getInstance()->pauseBackgroundMusic();
    SimpleAudioEngine::getInstance()->pauseAllEffects();
#endif
}

// this function will be called when the app is active again
void AppDelegate::applicationWillEnterForeground()
{
    auto director = Director::getInstance();
    director->startAnimation();
    director->getEventDispatcher()->dispatchCustomEvent("game_on_show");

#if USE_AUDIO_ENGINE
    AudioEngine::resumeAll();
#elif USE_SIMPLE_AUDIO_ENGINE
    SimpleAudioEngine::getInstance()->resumeBackgroundMusic();
    SimpleAudioEngine::getInstance()->resumeAllEffects();
#endif
}

plz add a debug log with file PluginFacebookJSHelper.cpp

    virtual void onLogin(bool isLogin, const std::string& error)
    {
        cocos2d::log("%s", __FUNCTION__); // this line

        std::string name("onLogin");
        JS::Value dataVal[2];

#if MOZJS_MAJOR_VERSION < 52
        JSB_AUTOCOMPARTMENT_WITH_GLOBAL_OBJCET
#endif

        dataVal[0] = JS::BooleanValue(isLogin);
        dataVal[1] = SB_STR_TO_JSVAL(s_cx, error);
        invokeDelegate(name, dataVal, 2);
    }

check the c++ callback invoked.

or add breakpoint to check it.

I am not receiving any calls/logs to this function… Will it be overwriiten and any other function on runtime in sdkbox since this is marked as virtual? But Im getting logs on onAPI virtual function…

Sorry, I was overriding SDKBOX onActivityResult function. That caused the problem. Now fixed it! Thanks for your time!

1 Like

This topic was automatically closed 24 hours after the last reply. New replies are no longer allowed.