Skip to content

Commit cd6d50a

Browse files
committed
Return JWT token for limited login
1 parent 686415b commit cd6d50a

3 files changed

Lines changed: 28 additions & 11 deletions

File tree

src/login.common.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -277,7 +277,7 @@ export class FacebookLoginResult {
277277

278278
// Success fields.
279279
Id: string;
280-
AccessToken: string;
280+
AccessToken: string; // Note: this is a JWT OIDC Token when using LimitedLogin.
281281
ProfileDataFields: {[key: string]: any};
282282
}
283283

@@ -407,4 +407,4 @@ export class SignInWithAppleNameComponents {
407407

408408
// The phonetic representation of the user's name.
409409
PhoneticRepresentation?: SignInWithAppleNameComponents;
410-
}
410+
}

src/login.ios.ts

Lines changed: 25 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,9 @@ let authorizationController: any /* ASAuthorizationController */;
4343
let authorizationControllerDelegateImpl: ASAuthorizationControllerDelegateImpl;
4444

4545
interface GoogleEventData {
46-
Result: GIDSignInResult;
47-
User: GIDGoogleUser;
48-
Error: NSError;
46+
Result?: GIDSignInResult;
47+
User?: GIDGoogleUser;
48+
Error?: NSError;
4949
}
5050

5151
@NativeClass()
@@ -401,11 +401,16 @@ export function startGoogleSignIn(googleSignInOptions: GoogleSignInOptions): Pro
401401
});
402402

403403
GIDSignIn.sharedInstance.signInWithPresentingViewControllerCompletion(Application.ios.rootController, (p1: GIDSignInResult, p2: NSError) => {
404-
googleDidSignIn.next({
405-
Result: p1,
406-
User: p1.user,
407-
Error: p2,
408-
});
404+
if (p2) {
405+
googleDidSignIn.next({
406+
Error: p2,
407+
});
408+
} else {
409+
googleDidSignIn.next({
410+
Result: p1,
411+
User: p1.user,
412+
});
413+
}
409414
});
410415
} catch (e) {
411416
const result = new GoogleSignInResult();
@@ -506,6 +511,7 @@ export function startFacebookLogin(facebookLoginOptions: FacebookLoginOptions):
506511

507512
// Access token is not available in limited login mode.
508513
let accessToken: FBSDKAccessToken;
514+
let authenticationToken: FBSDKAuthenticationToken;
509515
if (!facebookLoginOptions.LimitedLogin) {
510516
accessToken = result.token;
511517
if (!accessToken) {
@@ -515,6 +521,15 @@ export function startFacebookLogin(facebookLoginOptions: FacebookLoginOptions):
515521
resolve(loginResult);
516522
return;
517523
}
524+
} else {
525+
authenticationToken = result.authenticationToken;
526+
if (!authenticationToken) {
527+
loginResult.ResultType = FacebookLoginResultType.FAILED;
528+
loginResult.ErrorCode = 0;
529+
loginResult.ErrorMessage = "No authentication token returned";
530+
resolve(loginResult);
531+
return;
532+
}
518533
}
519534

520535
loginResult.ResultType = FacebookLoginResultType.SUCCESS;
@@ -612,6 +627,8 @@ export function startFacebookLogin(facebookLoginOptions: FacebookLoginOptions):
612627
if (!facebookLoginOptions.LimitedLogin) {
613628
loginResult.AccessToken = accessToken.tokenString;
614629
loginResult.Id = accessToken.userID;
630+
} else {
631+
loginResult.AccessToken = authenticationToken.tokenString;
615632
}
616633

617634
if (!facebookLoginOptions.LimitedLogin && facebookLoginOptions.RequestProfileData) {

src/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@klippa/nativescript-login",
3-
"version": "4.0.1",
3+
"version": "4.0.4",
44
"description": "The best way to do social logins in NativeScript, a plugin with modern SDKs to allow authentication to various providers with access to all SDK features",
55
"main": "login",
66
"typings": "index.d.ts",

0 commit comments

Comments
 (0)