diff --git a/Samples/NativeFacebookLogin/FacebookLogin/FacebookLogin.uno b/Samples/NativeFacebookLogin/FacebookLogin/FacebookLogin.uno index c9c240d..22247c8 100644 --- a/Samples/NativeFacebookLogin/FacebookLogin/FacebookLogin.uno +++ b/Samples/NativeFacebookLogin/FacebookLogin/FacebookLogin.uno @@ -104,19 +104,31 @@ public class FacebookLogin static extern(!iOS) void OpenFacebookURL(string url) { } - + public class AccessToken { extern(iOS) ObjC.Object _token; - extern(Android) Java.Object _token; + extern(Android) Java.Object _token; public extern(iOS) AccessToken(ObjC.Object token) { _token = token; } public extern(Android) AccessToken(Java.Object token) { - _token = token; + _token = token; } + + public extern(Android) string AsString() { + var token = GetToken(_token); + debug_log ("Token from Java: " + token); + return token; + } + + [Foreign(Language.Java)] + extern(Android) string GetToken(Java.Object token) + @{ + return ((com.facebook.AccessToken)token).getToken(); + @} } [Foreign(Language.ObjC)] @@ -155,7 +167,7 @@ public class FacebookLogin @Override public void onSuccess(LoginResult loginResult) { - AccessToken accessToken = loginResult.getAccessToken(); + com.facebook.AccessToken accessToken = loginResult.getAccessToken(); UnoObject unoAccessToken = @{AccessToken(Java.Object):New(accessToken)}; onSuccess.run(unoAccessToken); } diff --git a/Samples/NativeFacebookLogin/FacebookLogin/FacebookLoginModule.uno b/Samples/NativeFacebookLogin/FacebookLogin/FacebookLoginModule.uno index fa4a556..aee7fac 100644 --- a/Samples/NativeFacebookLogin/FacebookLogin/FacebookLoginModule.uno +++ b/Samples/NativeFacebookLogin/FacebookLogin/FacebookLoginModule.uno @@ -68,6 +68,7 @@ public class FacebookLoginModule : NativeModule _instance = this; Resource.SetGlobalKey(_instance, "FacebookLogin"); AddMember(new NativePromise("login", Login, Converter)); + AddMember(new NativeFunction("tokenAsString", (NativeCallback)GetAccessTokenAsString)); } Future Login(object[] args) @@ -79,4 +80,10 @@ public class FacebookLoginModule : NativeModule { return new External(accessToken); } + + object GetAccessTokenAsString(Context c, object[] args) { + External obj = (External)args[0]; + var token = (FacebookLogin.AccessToken)obj.Object; + return token.AsString(); + } } diff --git a/Samples/NativeFacebookLogin/MainView.ux b/Samples/NativeFacebookLogin/MainView.ux index 2d1fed4..97e77c8 100644 --- a/Samples/NativeFacebookLogin/MainView.ux +++ b/Samples/NativeFacebookLogin/MainView.ux @@ -1,23 +1,30 @@ var FacebookLogin = require("FacebookLogin"); + var Observable = require('FuseJS/Observable'); + + var accessToken = Observable('Not logged in'); function login() { FacebookLogin.login().then(function(result) { - console.log("Login successful"); + console.log("Login successful: " + FacebookLogin.tokenAsString(result)); + accessToken.value = FacebookLogin.tokenAsString(result); }, function(err) { console.log("Login failed: " + err); + accessToken.value = 'Login failed miserably'; }); } module.exports = { login: login, + accessToken: accessToken };