Вопрос по objective-c, iphone, facebook, ios – фейсбук логин дай мне уже авторизованное приложение без автоматического возврата в приложение
Мое приложение должно реализовывать вход с помощью Facebook, но я заметил, что каждый раз, когда я хочу войти в Facebook, скажите мне, что вы уже авторизуете это приложение, вопрос, если я уже авторизовал приложение, Facebook должен возвращаться автоматически, не нажимая кнопку okey, как я увидел в других приложениях?
см. прикрепленное изображение
1- войдите в свой Facebook как администратор вашего приложения.
2- перейти кhttps://developers.facebook.com/apps/YOUR_FACEBOOK_APP_ID/summary.
3- перейти кsettings & GT;basic & GT;Native IOS app
4- установитьConfigured for iOS SSO: чтобы включено
что ваше приложение имеет правильный префикс URL в настройках сборки. Также убедитесь, что префикс URL-адреса совпадает с вашим префиксом идентификатора / URL-адреса Facebook в приложении для разработчиков Facebook.
Edit: Ваша проблема, вероятно, в том, что срок действия access_token истекает, поэтому он должен повторно запросить разрешения.
Это произойдет, если ваше приложение не запрашивало разрешения offline_access. В более новом SDK offline_access устарел, и теперь вам необходимо расширить access_token.
Смотрите эту ссылку:https://developers.facebook.com/docs/mobile/ios/build/#extend_token
есть ли текущий сеанс, прежде чем войти в систему сFBSDKLoginManager
, Не использовать[loginManager logout]
перед входом.
if ([FBSDKAccessToken currentAccessToken])
{
NSLog(@"Token is available : %@",[[FBSDKAccessToken currentAccessToken]tokenString]);
// Now get details using graphpath.
} else {
// login with permissions using FBSDKLoginManager and get details using graphpath in completion
}
но я хотел бы добавить еще один полезный ответ дляSwift 3.0
:
При использовании FB Login в Swift у меня возникла проблема, и я ранее делал это следующим образом:
let fbLoginManager : FBSDKLoginManager = FBSDKLoginManager()
fbLoginManager.loginBehavior = .systemAccount
Как это использует, системная учетная запись для проверки пользователя авторизован для входа или нет. Если вы не выйдете из системы и не войдете через другого пользователя, приложение покажет одно и то же "Уже авторизовано". сообщение вместо Fresh логин. Так что я использовал этот способ, и этот трюк делает свою работу:
let fbLoginManager : FBSDKLoginManager = FBSDKLoginManager()
fbLoginManager.loginBehavior = .web.
Это показать экран входа после выхода из системы. Надеюсь, это поможет решить эту проблему.
Не стесняйтесь комментировать. Благодарю.
да вы делаете FBLogin в своем приложении, вы получаете токен доступа. как только вы получите токен, вы не должны снова входить в систему (в противном случае вам будет предложеноalready authorized this app поскольку вашему приложению уже был предоставлен токен доступа, срок действия которого не истек). Вы должны повторно использоватьunexpired access token.
Как это :
if FBSDKAccessToken.currentAccessToken() != nil {
print(FBSDKAccessToken.currentAccessToken().userID)
print(currentAccessToken().tokenString)
//OR call the *FBGraphRequest*
}
Примечание: для входа в браузер из приложения (SVC: Safari View Controller)
узнать больше: https://developers.facebook.com/blog/post/2015/10/29/Facebook-Login-iOS9/ а также https://developers.facebook.com/docs/reference/ios/4.9/class/FBSDKLoginManager/
https://developers.facebook.com/bugs/190389531089978
Но ошибка появляется только на Android, IOS работает отлично.
(Кстати. То же самое поведение в приложении для Android и спрайте - проверьте это)