I am trying to implement login with Facebook functionality, But I am getting following error in return.
Login Failed with error: The operation couldn’t be completed.
(com.facebook.sdk.login error 304.)
Here is my Code
- (void)loginWithFacebook {
NSString *const read_actions = @"email";
[[[FBSDKLoginManager alloc] init]
logInWithReadPermissions:@[read_actions] handler:^(FBSDKLoginManagerLoginResult *result, NSError *error)
{
if (error) {
NSLog(@"Login Failed with error: %@", error.localizedDescription);
}
else if (result.isCancelled)
{
NSLog(@"Login Failed due to Cancel");
}
else
{
if ([result.grantedPermissions containsObject:read_actions]) {
NSLog(@"Permission granted");
}
}
}];
}
![]()
asked Jul 1, 2015 at 8:04
![]()
1
This may because of previous login token not cleared.So before login just logout.
NSString *const read_actions = @"email";
FBSDKLoginManager *loginManager = [[FBSDKLoginManager alloc] init];
[loginManager logOut];
[loginManager logInWithReadPermissions:@[read_actions]
handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {
if (error) {
NSLog(@"Login Failed with error: %@", error.localizedDescription);
}
else if (result.isCancelled) {
NSLog(@"Login Failed due to Cancel");
} else {
if ([result.grantedPermissions containsObject:read_actions]) {
NSLog(@"Permission granted");
}
}
}];
answered Sep 17, 2015 at 6:01
Minal SoniMinal Soni
6078 silver badges12 bronze badges
2
Swift 4 update :
Everytime you perform something like this
FBSDKLoginManager().login(withReadPermission: ["email"], from: self) { (result, error) in // Check for error and then login }
//insert this code before the **Login code:**
FBSDKLoginManager().logOut()
and it should work fine 🙂
![]()
answered Dec 13, 2017 at 13:52
Sanket RaySanket Ray
1,0611 gold badge15 silver badges23 bronze badges
It seems I was doing
[FBSDKAccessToken refreshCurrentAccessToken:^(FBSDKGraphRequestConnection *connection, id result, NSError *error){}
in a background thread during login operation. I removed that and It worked perfectly fine.
answered Jul 8, 2015 at 5:31
![]()
Hassan AftabHassan Aftab
6342 gold badges9 silver badges20 bronze badges
0
Log out the fblogin manager on action which you are performing login just before the login api like:-
fbLoginManager.logOut()
fbLoginManager.logIn(withReadPermissions: ["public_profile","email"], from: self) { (result, error) -> Void in
//Your code here
}
![]()
answered May 27, 2017 at 7:50
Swift 5 update :
Just refresh your accessToken or logout first.
func loginButtonClicked() {
let loginManager = LoginManager()
loginManager.logOut()
loginManager.logIn(permissions: [.email], viewController: nil) { (loginResult) in
switch loginResult {
case .success(let grantedPermissions, _, let token):
self.returnUserData()
print("Success",token,grantedPermissions)
break
case .cancelled:
print("Cancel")
break
case .failed(let error):
print(error.localizedDescription)
break
}
}
}
answered Aug 28, 2019 at 9:14
![]()
Try this, But its in swift 2
«Logout before login in login button action»
let login: FBSDKLoginManager = FBSDKLoginManager()
login.logOut()
answered Jun 22, 2016 at 10:30
![]()
1
Обновлено: 27.01.2023
Windows 10 проблемы с Not Modified чаще всего связаны с повреждением или отсутствием файла Edge . Основной способ решить эти проблемы вручную — заменить файл Windows 10 новой копией. Запуск сканирования реестра после замены файла, из-за которого возникает проблема, позволит очистить все недействительные файлы Not Modified, расширения файлов или другие ссылки на файлы, которые могли быть повреждены в результате заражения вредоносным ПО.
Статус
Источник ошибок Not Modified
Проблемы Not Modified вызваны поврежденным или отсутствующим Not Modified, недопустимыми ключами реестра, связанными с Edge , или вредоносным ПО.
Более конкретно, данные ошибки Not Modified могут быть вызваны следующими причинами:

В игре «Standoff2» при авторизации через «Facebook»
выскакивает ошибка
com.facebook.sdk.login ошибка 304
Что делать? Подскажите, пожалуйста!
пройти тест на свою ориентацию, потому что я бы, на твоем месте, уже начал сомневаться
Вааау, ты такой крутой, оскорблять людей только лишь за то, что они играют в определенную игру, которая не нравится тебе, это так замечательно. ✌️
Код «HTTP 304 Not Modified» клиента указывает, что нет необходимости повторно передавать запрошенные ресурсы. Это неявное перенаправление на кешированный ресурс. Это происходит, когда метод safe, например GET или HEAD запрос или когда запрос является условным и использует If-None-Match (en-US) или If-Modified-Since .
Многие developer tools’ network panels браузеров создают посторонние запросы, приводящие к 304 ответам, так что доступ к локальному кешу виден разработчикам.
Классические проблемы Not Modified
Осложнения с Edge и Not Modified включают в себя:
- «Ошибка в файле Not Modified.»
- «Отсутствует файл Not Modified.»
- «Отсутствует файл Not Modified.»
- «Не удалось загрузить модуль для Not Modified. «
- «Ошибка регистрации: Not Modified. «
- «Ошибка во время выполнения: Not Modified. «
- «Ошибка загрузки Not Modified.»
Совместимость с браузером
Проблема такая, с субдомена не грузиться на главный сайт контент, картинки, видео, стили и тд. и логах выводит 304 ошибка.
Подключаю вот такай адрес:
Не чего не происходит, но если перейти по ссылке то Jquery нормально загрузит.
Конфиг Nginx.
- Вопрос задан более трёх лет назад
- 6804 просмотра

304 это не ошибка и не нужно её чинить.

Впрочем приведённый конфиг никакого отношения к cdn._адрес сайт_.info не имеет

Это означает, что файл находится в кеше браузера. Можно почистить кеш, если есть необходимость.
Так как вопрос касается nginx, то можно запретить исползование такого вида кеша:
Может быть полезно, если файл генерируется и постоянно меняется.
Однако для статики такой вариант не рекомендуется, браузеру нет смысла постоянно грузить неизменяемые картинки, скрипты и т.п.
Характеристики
Читайте также:
- Замена браво старс самп
- Vermintide 2 курсор мыши warhammer как убрать
- Men of war assault squad 2 как установить карты
- Team fortress 2 hitsound как установить
- Решение ошибки minecraft closed with exit code 1073740791 в tlauncher
Я пытаюсь реализовать логин с функциональностью Facebook, но я получаю следующую ошибку взамен.
ошибка входа в систему: операция не может быть завершена.
(com.фейсбук.пакет SDK.ошибка входа 304.)
вот мой код
- (void)loginWithFacebook {
NSString *const read_actions = @"email";
[[[FBSDKLoginManager alloc] init]
logInWithReadPermissions:@[read_actions] handler:^(FBSDKLoginManagerLoginResult *result, NSError *error)
{
if (error) {
NSLog(@"Login Failed with error: %@", error.localizedDescription);
}
else if (result.isCancelled)
{
NSLog(@"Login Failed due to Cancel");
}
else
{
if ([result.grantedPermissions containsObject:read_actions]) {
NSLog(@"Permission granted");
}
}
}];
}
5 ответов
это может быть из-за предыдущего маркера входа не очищено.Поэтому перед логином просто выйдите из системы.
NSString *const read_actions = @"email";
FBSDKLoginManager *loginManager = [[FBSDKLoginManager alloc] init];
[loginManager logOut];
[loginManager logInWithReadPermissions:@[read_actions]
handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {
if (error) {
NSLog(@"Login Failed with error: %@", error.localizedDescription);
}
else if (result.isCancelled) {
NSLog(@"Login Failed due to Cancel");
} else {
if ([result.grantedPermissions containsObject:read_actions]) {
NSLog(@"Permission granted");
}
}
}];
обновление Swift 4:
каждый раз, когда вы выполняете что-то вроде этого
вставить этот код перед логин:
FBSDKLoginManager().login(withReadPermission: ["email"], from: self) { (result, error) in // Check for error and then login }
FBSDKLoginManager().logOut()
и он должен работать нормально 🙂
Кажется, я делаю
[FBSDKAccessToken refreshCurrentAccessToken:^(FBSDKGraphRequestConnection *connection, id result, NSError *error){}
в фоновом потоке во время операции входа в систему. Я удалил его, и он работал отлично.
выйдите из fblogin manager на действие, которое вы выполняете вход непосредственно перед API входа, как: —
fbLoginManager.logOut ()
fbLoginManager.logIn(withReadPermissions: ["public_profile","email"], from: self) { (result, error) -> Void in
попробуйте это, но его в swift 2
«выход перед входом в действие кнопки входа»
пусть логин: FBSDKLoginManager = FBSDKLoginManager()
авторизоваться.logOut ()
Я только что обновил facebook sdk v4.0
и в соответствии с учебным пособием Использование пользовательских пользовательских пользовательских интерфейсов
-(IBAction)facebookLoginClick:(id)sender {
FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];
[login logInWithReadPermissions:@[@"email"] handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {
if (error) {
// Process error
} else if (result.isCancelled) {
// Handle cancellations
} else {
// If you ask for multiple permissions at once, you
// should check if specific permissions missing
if ([result.grantedPermissions containsObject:@"email"]) {
// Do work
}
}
}];
}
НО результат всегда равен нулю, а код ошибки — 304, Я что-то пропустил?
Ответ 1
У меня была аналогичная проблема.
После инициализации FBSDKLoginManager я добавил строку, чтобы очистить данные и токен (Facebook):
FBSDKLoginManager *loginmanager= [[FBSDKLoginManager alloc]init];
[loginmanager logOut];
Надеюсь, что это поможет.
Таким образом, точно так же, как ОП спрашивает: «Я что-то упускаю»?
Да, следующий стандартный примерный код, который встречается повсюду, просто неверен:
-(IBAction)facebookLoginClick:(id)sender
{
FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];
---- ONE MAGIC LINE OF CODE IS MISSING HERE ----
[login logInWithReadPermissions:@[@"email"]
handler:^(FBSDKLoginManagerLoginResult *result, NSError *error)
{
if (error) {...}
else if (result.isCancelled) {...}
else { // (NB for multiple permissions, check every one)
if ([result.grantedPermissions containsObject:@"email"])
{ NSLog(@"%@",result.token); }
}
}];
}
вы должны сделать это:
-(IBAction)facebookLoginClick:(id)sender
{
FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];
[login logOut]; //ESSENTIAL LINE OF CODE
[login logInWithReadPermissions:@[@"email"]
handler:^(FBSDKLoginManagerLoginResult *result, NSError *error)
{
if (error) {...}
else if (result.isCancelled) {...}
else { // (NB for multiple permissions, check every one)
if ([result.grantedPermissions containsObject:@"email"])
{ NSLog(@"%@",result.token); }
}
}];
}
В противном случае приложение не будет работать, если пользователь будет изменять учетные записи FB на устройстве. (Если они по какой-то причине не переустанавливают приложение!)
Еще раз — популярный пример кода выше просто не работает (приложение входит в бесконечный цикл), если пользователь случайно меняет учетные записи FB. Вызов logOut должен быть выполнен.
Ответ 2
У меня было это, это произошло при изменении сведений о приложении FB в Xcode, когда было запущено приложение iOS. Вам нужно удалить приложение с устройства, а затем переиздать с помощью новой настройки приложения FB. Просто перекомпиляции недостаточно, чтобы очистить старые настройки FB
Ответ 3
Это случилось со мной, когда я изменил Facebook AppID (в файле Info.plist), переключив форму тестового приложения Facebook на приложение для создания Facebook. Если ваше приложение отправляет токен Facebook на сервер, который генерирует JWT, например, в SDK Facebook по-прежнему сохраняется fbToken (FBSDKAccessToken.currentAccessToken()), если только он не сказал, чтобы удалить его.
Это также может произойти в процессе производства, когда пользователь выходит из приложения, запрос API выхода из системы будет регистрировать пользователя и reset ваш JWT. Но даже перед отправкой запроса API выхода из системы клиент должен будет сообщить экземпляру FBSDKLoginManager выйти из системы.
if let currentAccessToken = FBSDKAccessToken.currentAccessToken() where currentAccessToken.appID != FBSDKSettings.appID()
{
loginManager.logOut()
}
Ответ 4
Вы можете использовать следующий код для решения вашей проблемы:
[FBSDKAccessToken refreshCurrentAccessToken:^(FBSDKGraphRequestConnection *connection, id result, NSError *error){}
Ответ 5
Swift 3.0
func loginWithFacebook
{
let loginManager = FBSDKLoginManager()
if let currentAccessToken = FBSDKAccessToken.current(), currentAccessToken.appID != FBSDKSettings.appID()
{
loginManager.logOut()
}
loginManager.logIn(withReadPermissions: ["public_profile","email"], from: self, handler: { (result, error) in
if error != nil {
print("error(String(describing: error))")
}
else if (result?.isCancelled)! {
}
else {
print(FBSDKAccessToken.current())
}
})
}
Ответ 6
В соответствии с документами, 304 FBSDKLoginUserMismatchErrorCode «Указывает на отказ запрашивать новые разрешения, поскольку пользователь изменил».
Имеют смысл в сценарии @Adrian999.
Ответ 7
На самом деле, причина очень проста, вы можете попробовать сделать следующий шаг, чтобы легко увидеть этот код ошибки.
« Ошибка входа в систему Facebook» может иметь две причины:
- вы получаете информацию о пользователе из фейсбука.
- вы получаете информацию о пользователе от успеха facebook, но загрузка на свой собственный сервер завершается с ошибкой.
Код FBSDKLoginManager.m:
- (void)validateReauthentication:(FBSDKAccessToken *)currentToken withResult:(FBSDKLoginManagerLoginResult *)loginResult
{
FBSDKGraphRequest *requestMe = [[FBSDKGraphRequest alloc] initWithGraphPath:@"me"
parameters:nil
tokenString:loginResult.token.tokenString
HTTPMethod:nil
flags:FBSDKGraphRequestFlagDoNotInvalidateTokenOnError | FBSDKGraphRequestFlagDisableErrorRecovery];
[requestMe startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
NSString *actualID = result[@"id"];
if ([currentToken.userID isEqualToString:actualID]) {
[FBSDKAccessToken setCurrentAccessToken:loginResult.token];
[self invokeHandler:loginResult error:nil];
} else {
NSMutableDictionary *userInfo = [NSMutableDictionary dictionary];
[FBSDKInternalUtility dictionary:userInfo setObject:error forKey:NSUnderlyingErrorKey];
NSError *resultError = [NSError errorWithDomain:FBSDKLoginErrorDomain
code:FBSDKLoginUserMismatchErrorCode
userInfo:userInfo];
[self invokeHandler:nil error:resultError];
}
}];
}
когда currentToken.userID не равно actualID, FBSDKLoginUserMismatchErrorCode будет бросать.
Теперь эта проблема будет возникать, когда пользовательский логин входа в систему не работает, но после неудачи у вас нет [FacebookSDKManager logOut], приложение будет кэшировать accessToken для пользователя A, а затем пользователь. Измените учетную запись facebook пользователю B, при повторном подключении пользователя B снова появится эта проблема.
Ответ 8
Я тоже застрял в этом вопросе. затем я создал объект для FBSDKLoginManager в файле .h и в viewDidLoad файла .m, инициализировал его и установил свойство выхода из системы.
_fbLogin= [[FBSDKLoginManager alloc]init];
[_fbLogin logOut];
Это помогло мне и надеется, что это поможет вам.
Все лучшее.
Спасибо
Ответ 9
Swift 4.0 и FBSDKCoreKit 4.33
let loginManager = LoginManager()
if let currentAccessToken = AccessToken.current, currentAccessToken.appId != SDKSettings.appId
{
loginManager.logOut()
}
Ответ 10
swift 4.0, 4.2, 5.0
FBSDKLoginManager().logOut()
Ответ 11
Единый вход
Я также обнаружил, что эта проблема возникает, если у вас есть приложение, которое не требует единого входа (т.е. приложение, которое несколько пользователи будут создавать контент и обмениваться с одного устройства).
Вы можете изменить один знак в настройках вашего приложения https://developers.facebook.com/apps/your-app-id/settings/.
Ответ 12
У меня в Objective-C работает следующее
FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];
if ([FBSDKAccessToken currentAccessToken]) {
[login logOut];
}
и проблема была в том, что пользователь пытался войти как другой пользователь, как предложено @Vineeth Joseph
Ответ 13
Проверьте состояние своего FBSession:
isOpen
Indicates whether the session is open and ready for use.
@property (readonly) BOOL isOpen;
Declared In: FBSession.h
https://developers.facebook.com/docs/reference/ios/3.0/class/FBSession/
Ответ 14
304 указывает, что ничего не изменилось. Вероятно, вы как-то уже прошли аутентификацию, и поэтому получение нулевого значения с 304 указывает на то, что ничего не изменилось.
Swift 4 update :
Everytime you perform something like this
FBSDKLoginManager().login(withReadPermission: ["email"], from: self) { (result, error) in // Check for error and then login }
//insert this code before the **Login code:**
FBSDKLoginManager().logOut()
and it should work fine 🙂
This may because of previous login token not cleared.So before login just logout.
NSString *const read_actions = @"email";
FBSDKLoginManager *loginManager = [[FBSDKLoginManager alloc] init];
[loginManager logOut];
[loginManager logInWithReadPermissions:@[read_actions]
handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {
if (error) {
NSLog(@"Login Failed with error: %@", error.localizedDescription);
}
else if (result.isCancelled) {
NSLog(@"Login Failed due to Cancel");
} else {
if ([result.grantedPermissions containsObject:read_actions]) {
NSLog(@"Permission granted");
}
}
}];
Tags:
Ios
Objective C
Facebook
Facebook Login
Related
У меня была аналогичная проблема.
После инициализации FBSDKLoginManager я добавил строку, чтобы очистить данные и токен (Facebook):
FBSDKLoginManager *loginmanager= [[FBSDKLoginManager alloc]init];
[loginmanager logOut];
Надеюсь, что это поможет.
Таким образом, точно так же, как ОП спрашивает: «Я что-то упускаю»?
Да, следующий стандартный примерный код, который встречается повсюду, просто неверен:
-(IBAction)facebookLoginClick:(id)sender
{
FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];
---- ONE MAGIC LINE OF CODE IS MISSING HERE ----
[login logInWithReadPermissions:@[@"email"]
handler:^(FBSDKLoginManagerLoginResult *result, NSError *error)
{
if (error) {...}
else if (result.isCancelled) {...}
else { // (NB for multiple permissions, check every one)
if ([result.grantedPermissions containsObject:@"email"])
{ NSLog(@"%@",result.token); }
}
}];
}
вы должны сделать это:
-(IBAction)facebookLoginClick:(id)sender
{
FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];
[login logOut]; //ESSENTIAL LINE OF CODE
[login logInWithReadPermissions:@[@"email"]
handler:^(FBSDKLoginManagerLoginResult *result, NSError *error)
{
if (error) {...}
else if (result.isCancelled) {...}
else { // (NB for multiple permissions, check every one)
if ([result.grantedPermissions containsObject:@"email"])
{ NSLog(@"%@",result.token); }
}
}];
}
В противном случае приложение не будет работать, если пользователь будет изменять учетные записи FB на устройстве. (Если они по какой-то причине не переустанавливают приложение!)
Еще раз — популярный пример кода выше просто не работает (приложение входит в бесконечный цикл), если пользователь случайно меняет учетные записи FB. Вызов logOut должен быть выполнен.