I am building a Parse driven iOS application and am having some strange issues with Facebook login. Upon initializing my facebook permissions, I am asking for #"email" and nothing else. The login works when the user does not have the facebook iOS application installed on their device - and authenticates through safari (or another web browser). When the user DOES have the facebook iOS application installed and tries to grant permission to my app, the following error is displayed:
I have read through multiple tutorials and related stack overflow issues, and have yet to figure this one out. I tested this out with both an older version of the facebook SDK and the brand new one (3.5). Neither of those solutions appears to work. Anyone have any ideas? Thank you kindly.
Try with both #"email" and #"basic_info". This is currently documented on the Android side, but not iOS, which is weird - https://developers.facebook.com/docs/howtos/androidsdk/3.0/native-login/
Related
Issue
When we try to log in with developer or testers accounts on iOS, we get the error Unsupported Request. Our app was disabled because the tester could not login due to this error.
Scenario
It works on android
We noted that while the app was in review (activated) users successfully logged in using facebook in iOS devices. That makes us believe this is a problem only with developer and testers accounts
We also noted that when we try login with a tester account an openid item is added to the permissions granted. Before this permission is added we manage to login on web, after this token is added we get the same error on web (Unsupported request)
We already filed a bug report to Facebook and we're waiting for a response.
We're using the react-native-fbsdk-next module and this issue has some more info. We're now trying the approach suggested on this comment
Have anybody managed to solve this? It really looks like a Facebook Bug.
Edit (2021-11-24)
The approach mentioned here works partially: works when logging in through Safari but does not work when Safari is not logged in and the app is used.
We're still waiting for Facebook's response
Facebook SDK versions behavior summary
v7.0.1 (react-native-fbsdk: 2.0.0):
Works when using Safari
Does not work when using FB App
v9.0.1 (react-native-fbsdk-next: 4.2.0):
Does not work both through Safari and FB app
v12.1.0 (react-native-fbsdk-next: 6.1.1):
Does not work both through Safari and FB app
Edit (2021-11-25)
We removed Facebook integration for the iOS app because we could not keep going without Facebook login for Android users. The app was reactivated and, after that, we generated a new production build and it's working as it should
We're still waiting for Facebook's response
In our Facebook app developer insights, we're seeing consistent daily errors for method auth.extendssoaccesstoken with error code 10, 'Application does not have permission for this action'. We are on the latest SDK with a near exact implementation of the current iOS integration guide. Searching Google, SO and Facebook Developers for the error and/or anything to do with extend token provided no results. Is there something I should be enabling on the Facebook app?
After further investigation into the Facebook SDK source, I believe I have a solid lead.
Some, not all, of our users are getting the this error
The previous behavior of auth.extendSSOAccessToken was depended upon the app receiving the 'offline_access' permission from the user.
The facebook-ios-sdk does not touch the 'offline_access' permission anywhere in it's code.
The application "not having permissions" for extending the access token suggests that the method still depends on the application getting the 'offline_access' permission. The only change is this now happens silently.
The Conclusion:
The app is not being granted the 'offline_access' permission in one of the many different methods of authentication. The iOS SDK attempts authentication in the following manner:
iOS Integrated Facebook Dialog
iOS Facebook App "Fast App Switch"
Login through Safari
Facebook SDK UIView Login Dialog
4 seems outdated and unlikely, and we're getting ~17% error rates which narrows it down to 1 or 3, since 2 is definitely still widely used.
Will update after further analysis.
Update 1
Using Facebook's insights and our git history, I believe the issue occurs when the user authenticates using the iOS6 Integrated Facebook Dialog (method 1). Came to the conclusion because the error appeared on Facebook Developer Insights after the iOS6 release and we released a version of the app that used SDK 3.1
Will update after testing
Firstly, apologies for the vague question!
At short notice I've been handed an app which has started failing when posting Facebook status updates. It seems to be using a very old version of the Facebook SDK so none of the code examples I have found work.
The error message when trying to post implies that facebook.users.setStatus endpoint is deprecated.
Accordingly, I updated the code to call facebook.stream.publish which seems to be the currently supported.
This results in a permissions error (code 200).
I then changed the Facebook app record to request the publish_actions permission. This looks good on the Facebook preview page:
...but doesn't seem to be reflected onthe in-app Facebook logon screen:
http://s13.postimage.org/d5sf8j0zr/i_Phone_No_Permissions_Request_Redact.png
I have waited several hours now so I don't think the problem is Facebook propogating the
app settings. Can anyone tell me if I'm on the right track here?
Plan B would be rewrite Facebook access using latest Facebook SDK, but this will require an upgrade for XCode and Mac OS, which I'm keen to avoid.
The publish_actions permission is used when dealing with Open Graph actions. From what I've read you'll need the extended publish_stream permission.
I am developing a iOS application which allows users to login by using their Facebook account.
I managed to implement the login procedure thanks to official tutorial I found here https://github.com/facebook/facebook-ios-sdk. I found here https://developers.facebook.com/docs/tutorials/ios-sdk-tutorial/authenticate/ another tutorial which looks pretty different since in the first tutorial the user signs in through Safari, instead in the second tutorial the native Facebook App is used.
Among these two systems, which one is better? Perhaps by using Safari I could avoid any issue concerning back compatibility with older versions of iOS?
Thanks!
If you're using the official Facebook SDK, here's what happens:
If a user does have the Facebook app installed, they'll be taken to it to authenticate and login to your app.
If the user does not have the Facebook app installed, they'll be taken to Safari to authenticate and login to your app.
Either way, the login process is the same. After they authenticate, they're returned to your app using a specific URL scheme so that you can continue with what you're doing.
Finally, if you're targeting iOS 6 only, you can take advantage of the single sign on features built into iOS. Check the docs for more information on that.
I have followed the example of Facebook SDK for iOS (Hackbook) and it works well however whenever the person is logging in the app takes take the person to Safari or the Facebook app (if you have it installed on the device). Is there a way I can call the permission without leaving the app.
Thanks
there once was. But facebooks says that you should use SSO (single sign on) with the official facebook app. So even if you'd modify the files of the facebook-ios-sdk, it would probably not work.