Thank you! I had everything except the @JsFunction. Here's the final code
in case anybody else needs it:
@JsType(isNative = true)
private static class FbResponse {
private String status;
private FbAuthResponse authResponse;
}
@JsType(isNative = true)
private static class FbAuthResponse {
private String accessToken;
private Integer expiresIn;
private String userID;
}
@JsType(isNative = true)
private static interface FB {
void init(FBParamObj fbParamObj);
void getLoginStatus(FbLoginStatusCallbackJsFunction
fbLoginStatusCallbackJsFunction);
}
@JsProperty(namespace = JsPackage.GLOBAL)
private static native FB getFB();
private static class FBParamObj {
@JsProperty
String appId = ApplicationClientConstants.FacebookAppID;
@JsProperty
String version = ApplicationClientConstants.
FacebookAuthSDKVer;
@JsProperty
boolean cookie = true;
@JsProperty
boolean xfbml = false;
}
@JsMethod(namespace = JsPackage.GLOBAL)
public static final void fbAsyncInit() {
getFB().init(new FBParamObj());
getFB().getLoginStatus(new FbLoginStatusCallbackJsFunction()
{
@Override
public JavaScriptObject call(FbResponse response) {
Window.alert(" status: " + response.status +
//
"\n userID: " + response.authResponse.userID
+ //
"\n accessToken: " + response.authResponse.
accessToken + //
"\n expiresIn: " + response.authResponse.
expiresIn);
return null;
}
});
}
@JsFunction
private interface FbLoginStatusCallbackJsFunction {
public JavaScriptObject call(FbResponse response);
}
On Saturday, September 10, 2016 at 11:28:05 AM UTC-4, zakaria amine wrote:
>
> Hello,
>
> You need to use @JsFunction, something like that would do the trick in
> your case:
>
> @JsFunction
> public interface Function{
> public JavaScriptObject call(FBResponse event);
>
> }
>
> and then you can define your FBResponse either using JsInterop or JSNI:
>
> @JsType(isNative=true, namespace=GLOBAL, name="Object")
> public interface FBResponse{
> public int status;
>
> }
>
>
>
> Le samedi 10 septembre 2016 17:01:25 UTC+2, Tony a écrit :
>>
>> hi
>>
>> In JavaScript, in order to get the login status using the Facebook SDK,
>> one has to call the FB.getLoginStatus like so:
>>
>> FB.getLoginStatus(function(response) {
>> if (response.status === 'connected') // DO SOMETHING
>>
>> });
>>
>>
>>
>> notice the *function(response) { ... } *that is passed as a parameter to
>> getLoginStatus.
>>
>> I am able to map the FB object in GWT with the proper JSMethods like so:
>>
>> @JsType(isNative = true)
>>
>> public static interface FB {
>>
>> void init(FBParamObj fbParamObj);
>>
>> void getLoginStatus(CustomCallbackFunction callbackFunction);
>>
>> }
>>
>>
>> However, I'm not sure how to define the *CustomCallbackFunction *
>> *callbackFunction* that I need to provide as a parameter to
>> FB.getLoginStatus.
>> FB.getLoginStatus is provided by the Facebook SDK so I can not change it.
>>
>>
>> How do I create this JavaScript callback function in GWT so I can pass it
>> to the FB SDK as a parameter?
>>
>> I'm sure I'm missing something very basic but I can't seem to find it in
>> the documentation.
>>
>>
>>
>>
>> Thank you for the help!
>>
>> Tony
>>
>
--
You received this message because you are subscribed to the Google Groups "GWT
Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/google-web-toolkit.
For more options, visit https://groups.google.com/d/optout.