我正在嘗試將Facebook集成應用到我的應用中。我使用以下代碼登錄。 在我登錄後,當我註銷時,應用程序從頭開始全面重新啓動,並且每次都需要權限。我只希望它在我第一次登錄特定用戶時要求獲得許可。但它總是詢問我何時退出並嘗試使用Facebook按鈕登錄。ios登錄並登錄後的Facebook集成錯誤
- (IBAction)facebook:(id)sender
{
FBLoginView *loginView=[[FBLoginView alloc]init];
loginView.delegate=self;
loginView.readPermissions = @[@"first_name",
@"last_name",
@"location",
@"id",
@"access_token",
@"email"];
NSArray* permissions = [NSArray arrayWithObjects: @"email", nil];
loginView.readPermissions = @[@"email"];
loginView.readPermissions=permissions;
[FBSession openActiveSessionWithAllowLoginUI:YES];
[FBRequestConnection
startForMeWithCompletionHandler:^(FBRequestConnection *connection,
id<FBGraphUser> user1,
NSError *error)
{
if (!error)
{
firstname=user1.first_name;
lastname=user1.last_name;
city=[user1.location objectForKey:@"name"];
email=user1[@"email"];
fbid=user1.id;
[email protected]"Y";
[[NSUserDefaults standardUserDefaults]setObject:Loggedin forKey:@"token"];
[[NSUserDefaults standardUserDefaults]synchronize];
}
NSURL *url = [[NSURL alloc]initWithString:[NSString stringWithFormat:@"%@action=currfbuser&email=%@&fb_id=%@",MainURL,email,fbid ]];
NSError *errors;
NSData *data = [NSData dataWithContentsOfURL:url];
NSDictionary *json = (NSDictionary *)[NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&errors];
status = json[@"status"];
user = json[@"user"];
if ([status isEqualToString:@"success"])
{
[self performSegueWithIdentifier: @"LogIN" sender: self];
}
else if (!([fbid isEqualToString:@""]))
{
[self performSegueWithIdentifier: @"Facebooksegue" sender: self];
}
NSLog(@"%@",firstname);
NSLog(@"%@",lastname);
NSLog(@"%@",city);
NSLog(@"%@",email);
NSLog(@"%@",fbid);
}];
}
以下代碼我用於註銷。
- (IBAction)Logout:(id)sender
{
_DetailsView.hidden=YES;
_fade.hidden=YES;
y=0;
[email protected]"N";
user=nil;
NSHTTPCookieStorage* cookies = [NSHTTPCookieStorage sharedHTTPCookieStorage];
NSArray* facebookCookies = [cookies cookiesForURL:[NSURL URLWithString:@"http://login.facebook.com"]];
for (NSHTTPCookie* cookie in facebookCookies) {
[cookies deleteCookie:cookie];
}
[FBSession.activeSession closeAndClearTokenInformation];
[[NSUserDefaults standardUserDefaults]setObject:Loggedin forKey:@"token"];
[[NSUserDefaults standardUserDefaults]setObject:user forKey:@"user"];
[[NSUserDefaults standardUserDefaults]synchronize];
[self.navigationController popToRootViewControllerAnimated:YES];
}
這是我第一次整合Facebook。所以我對我使用的代碼沒有多少確定。 用戶數據抓取工作正常。問題是,應用程序每次都要求獲得許可,如果我按下「確定」或跳過權限,那麼當我單擊「確定」或「跳過」時,應用程序會重新啓動。
我獲得的輸出已經上傳到YouTube。請檢查以下鏈接。
我一直堅持這個,不能前進堂妹這個bug。 請幫助我,並且當賞金可用時,我可以給出50解決方案。
謝謝。
你說的是對的。但是,當我註銷活動會話關閉。所以這再次發生。它一次又一次地要求許可。同樣,在接受許可或跳過後,應用程序將重新啓動,並且啓動屏幕會顯示爲我上傳的鏈接中的視頻。 – Spidy
如果你註銷,它應該再次詢問權限。否則如果userA註銷和userB想要登錄會發生什麼。你的意思是說,用戶B應該問用戶A知道應用程序將訪問什麼數據或應用程序應該假設用戶B也會給予權限 –
主要問題是應用程序在獲取數據後重新啓動...這是登錄我必須在facebook登錄按鈕上按兩次... – Spidy