我跟着this guide,我已經成功創建了我的應用程序與Facebook集成。FaceBook API,登錄應用程序內
什麼問題?
當用戶需要做的登錄,應用程序在瀏覽器中退出(或Facebook的應用程序,如果已安裝的)
如何在應用程序內完全保持認證?
我跟着this guide,我已經成功創建了我的應用程序與Facebook集成。FaceBook API,登錄應用程序內
什麼問題?
當用戶需要做的登錄,應用程序在瀏覽器中退出(或Facebook的應用程序,如果已安裝的)
如何在應用程序內完全保持認證?
oAuth登錄的關鍵在於它不會在您的應用程序中發生。它使用快速應用程序切換在可信環境(Safari或Facebook應用程序)中執行身份驗證。
但是,您可以修改Facebook.m以在您的應用程序中執行身份驗證,但您的用戶憑據將不會被記住。您可以看到,如果您的iOS設備不支持多任務處理,那麼會有一個備用登錄對話框。從Facebook.m
摘錄(約160行):
if ([device respondsToSelector:@selector(isMultitaskingSupported)] && [device isMultitaskingSupported]) {
if (tryFBAppAuth) {
NSString *scheme = kFBAppAuthURLScheme;
if (_localAppId) {
scheme = [scheme stringByAppendingString:@"2"];
}
NSString *urlPrefix = [NSString stringWithFormat:@"%@://%@", scheme, kFBAppAuthURLPath];
NSString *fbAppUrl = [FBRequest serializeURL:urlPrefix params:params];
didOpenOtherApp = [[UIApplication sharedApplication] openURL:[NSURL URLWithString:fbAppUrl]];
}
if (trySafariAuth && !didOpenOtherApp) {
NSString *nextUrl = [self getOwnBaseUrl];
[params setValue:nextUrl forKey:@"redirect_uri"];
NSString *fbAppUrl = [FBRequest serializeURL:loginDialogURL params:params];
didOpenOtherApp = [[UIApplication sharedApplication] openURL:[NSURL URLWithString:fbAppUrl]];
}
}
// If single sign-on failed, open an inline login dialog. This will require the user to
// enter his or her credentials
if (!didOpenOtherApp) {
[_loginDialog release];
_loginDialog = [[FBLoginDialog alloc] initWithURL:loginDialogURL
loginParams:params
delegate:self];
[_loginDialog show];
}
如果刪除第一個條件,它是一個包含代碼,並設置didOpenOtherApp爲NO,你可以得到你正在尋找的行爲。
要禁用此行爲,請修改Facebook.m第275行並將兩個選項都設置爲NO。
- (void)authorize:(NSArray *)permissions {
self.permissions = permissions;
// with both options NO, authorization always happens in-app
[self authorizeWithFBAppAuth:NO safariAuth:NO];
}
謝謝!!!真的:) – JAA
這比這更簡單一些(雖然事情在你回答時可能會有所不同)。 – bentford