diff --git a/samples/RPSSample/RPSSample/RPSFriendsViewController.m b/samples/RPSSample/RPSSample/RPSFriendsViewController.m index 39fcb348ec..bcce0e1d9e 100644 --- a/samples/RPSSample/RPSSample/RPSFriendsViewController.m +++ b/samples/RPSSample/RPSSample/RPSFriendsViewController.m @@ -196,7 +196,13 @@ - (IBAction)clickInviteFriends:(id)sender { message:@"Please come rock the logic with me!" title:@"Invite a Friend" parameters:parameters - handler:nil + handler:^(FBWebDialogResult result, NSURL *resultURL, NSError *error) { + if (result == FBWebDialogResultDialogCompleted) { + NSLog(@"Web dialog complete: %@", resultURL); + } else { + NSLog(@"Web dialog not complete, error: %@", error.description); + } + } friendCache:self.friendCache]; } diff --git a/scripts/build_distribution.sh b/scripts/build_distribution.sh index 1265413398..579e01a538 100755 --- a/scripts/build_distribution.sh +++ b/scripts/build_distribution.sh @@ -96,7 +96,7 @@ $PACKAGEMAKER \ --target 10.5 \ --version $FB_SDK_VERSION \ --out $FB_SDK_PKG \ - --title 'Facebook SDK 3.5 for iOS' \ + --title 'Facebook SDK 3.5.1 for iOS' \ || die "PackageMaker reported error" if [ ! "$CODE_SIGN_IDENTITY" ]; then diff --git a/scripts/build_documentation.sh b/scripts/build_documentation.sh index 12a3909c48..79c60d4dd2 100755 --- a/scripts/build_documentation.sh +++ b/scripts/build_documentation.sh @@ -45,7 +45,7 @@ rm -rf $DOCSET hash $APPLEDOC &>/dev/null if [ "$?" -eq "0" ]; then - APPLEDOC_DOCSET_NAME="Facebook SDK 3.5 for iOS" + APPLEDOC_DOCSET_NAME="Facebook SDK 3.5.1 for iOS" $APPLEDOC --project-name "$APPLEDOC_DOCSET_NAME" \ --project-company "Facebook" \ --company-id "com.facebook" \ diff --git a/src/FBDialog.m b/src/FBDialog.m index e7faa0bec2..eda5be1565 100644 --- a/src/FBDialog.m +++ b/src/FBDialog.m @@ -665,12 +665,18 @@ - (void)dialogWillDisappear { } - (void)dialogDidSucceed:(NSURL *)url { - // dismiss before calling into client-code, in case the client code releases us - [self dismissWithSuccess:YES animated:YES]; + // retain self for the life of this method, in case we are released by a client + id me = [self retain]; - // call into client code - if ([_delegate respondsToSelector:@selector(dialogCompleteWithUrl:)]) { - [_delegate dialogCompleteWithUrl:url]; + @try { + // call into client code + if ([_delegate respondsToSelector:@selector(dialogCompleteWithUrl:)]) { + [_delegate dialogCompleteWithUrl:url]; + } + + [self dismissWithSuccess:YES animated:YES]; + } @finally { + [me release]; } } diff --git a/src/FBNativeDialogs.h b/src/FBNativeDialogs.h index 497f98673f..70ae9733d4 100644 --- a/src/FBNativeDialogs.h +++ b/src/FBNativeDialogs.h @@ -105,4 +105,4 @@ __attribute__((deprecated)); */ + (BOOL)canPresentShareDialogWithSession:(FBSession*)session __attribute__((deprecated)); -@end \ No newline at end of file +@end diff --git a/src/FBOpenGraphActionShareDialogParams.h b/src/FBOpenGraphActionShareDialogParams.h index 5e29d2cd03..141ab1b6bc 100644 --- a/src/FBOpenGraphActionShareDialogParams.h +++ b/src/FBOpenGraphActionShareDialogParams.h @@ -40,4 +40,4 @@ extern NSString *const FBPostObject; /*! @abstract The fully qualified type of the Open Graph action. */ @property (nonatomic, copy) NSString *actionType; -@end \ No newline at end of file +@end diff --git a/src/FBSDKVersion.h b/src/FBSDKVersion.h index 78e3bcb6f3..3bb1d12d41 100644 --- a/src/FBSDKVersion.h +++ b/src/FBSDKVersion.h @@ -1,2 +1,2 @@ -#define FB_IOS_SDK_VERSION_STRING @"3.5.0" +#define FB_IOS_SDK_VERSION_STRING @"3.5.1" #define FB_IOS_SDK_MIGRATION_BUNDLE @"fbsdk:20130409" diff --git a/src/FBSession.m b/src/FBSession.m index 011c66edb3..b89df2eb25 100644 --- a/src/FBSession.m +++ b/src/FBSession.m @@ -826,16 +826,18 @@ - (void)authorizeWithPermissions:(NSArray*)permissions FBAppAuth:tryFacebookLogin safariAuth:tryFacebookLogin fallback:tryFallback - isReauthorize:isReauthorize]; + isReauthorize:isReauthorize + canFetchAppSettings:YES]; } - (void)authorizeWithPermissions:(NSArray*)permissions defaultAudience:(FBSessionDefaultAudience)defaultAudience integratedAuth:(BOOL)tryIntegratedAuth FBAppAuth:(BOOL)tryFBAppAuth - safariAuth:(BOOL)trySafariAuth + safariAuth:(BOOL)trySafariAuth fallback:(BOOL)tryFallback - isReauthorize:(BOOL)isReauthorize { + isReauthorize:(BOOL)isReauthorize + canFetchAppSettings:(BOOL)canFetchAppSettings { // setup parameters for either the safari or inline login NSMutableDictionary* params = [NSMutableDictionary dictionaryWithObjectsAndKeys: self.appID, FBLoginUXClientID, @@ -894,9 +896,10 @@ - (void)authorizeWithPermissions:(NSArray*)permissions !TEST_DISABLE_MULTITASKING_LOGIN) { if (tryFBAppAuth) { - if ([FBSettings defaultDisplayName] && // Don't autoselect Native Login unless the app has been setup for it. + FBFetchedAppSettings *fetchedSettings = [FBUtility fetchedAppSettings]; + if ([FBSettings defaultDisplayName] && // don't autoselect Native Login unless the app has been setup for it, + (fetchedSettings || canFetchAppSettings) && // and we have app-settings available to us, or could fetch if needed !TEST_DISABLE_FACEBOOKNATIVELOGIN) { - FBFetchedAppSettings *fetchedSettings = [FBUtility fetchedAppSettings]; if (!fetchedSettings) { // fetch the settings and call this method again didRequestAuthorize = YES; @@ -907,7 +910,8 @@ - (void)authorizeWithPermissions:(NSArray*)permissions FBAppAuth:tryFBAppAuth safariAuth:trySafariAuth fallback:tryFallback - isReauthorize:isReauthorize]; + isReauthorize:isReauthorize + canFetchAppSettings:NO]; }]; } else if (!fetchedSettings.suppressNativeGdp) { if (![[FBSettings defaultDisplayName] isEqualToString:fetchedSettings.serverAppName]) { @@ -1043,12 +1047,13 @@ - (void)authorizeUsingSystemAccountStore:(NSArray*)permissions // even when OS integrated auth is possible we use native-app/safari // login if the user has not signed on to Facebook via the OS [self authorizeWithPermissions:permissions - defaultAudience:defaultAudience - integratedAuth:NO - FBAppAuth:YES - safariAuth:YES - fallback:YES - isReauthorize:NO]; + defaultAudience:defaultAudience + integratedAuth:NO + FBAppAuth:YES + safariAuth:YES + fallback:YES + isReauthorize:NO + canFetchAppSettings:YES]; } else { [self logIntegratedAuthInsights:@"Authorization cancelled" @@ -1277,7 +1282,8 @@ - (BOOL)handleAuthorizationOpen:(NSDictionary*)parameters FBAppAuth:NO safariAuth:YES fallback:NO - isReauthorize:NO]; + isReauthorize:NO + canFetchAppSettings:YES]; return YES; } @@ -1290,7 +1296,8 @@ - (BOOL)handleAuthorizationOpen:(NSDictionary*)parameters FBAppAuth:NO safariAuth:NO fallback:NO - isReauthorize:NO]; + isReauthorize:NO + canFetchAppSettings:YES]; return YES; } diff --git a/src/tests/FBSessionTests.m b/src/tests/FBSessionTests.m index 45869c6d84..117244e251 100644 --- a/src/tests/FBSessionTests.m +++ b/src/tests/FBSessionTests.m @@ -52,7 +52,8 @@ - (void)authorizeWithPermissions:(NSArray*)permissions FBAppAuth:(BOOL)tryFBAppAuth safariAuth:(BOOL)trySafariAuth fallback:(BOOL)tryFallback - isReauthorize:(BOOL)isReauthorize; + isReauthorize:(BOOL)isReauthorize + canFetchAppSettings:(BOOL)canFetchAppSettings; - (FBSystemAccountStoreAdapter *)getSystemAccountStoreAdapter; - (void)callReauthorizeHandlerAndClearState:(NSError*)error; - (BOOL)isSystemAccountStoreAvailable; @@ -1380,7 +1381,8 @@ - (FBSession *)allocMockSessionWithNoOpAuth { FBAppAuth:YES safariAuth:YES fallback:YES - isReauthorize:NO]; + isReauthorize:NO + canFetchAppSettings:YES]; return mockSession; }