Recientemente hice esta actualización para mi aplicación. Mi razón para hacerlo fue un flujo más suave para iOS 6 y soporte futuro para Facebook ya que eventualmente van a depreciar el viejo SDK. Los grandes cambios fueron el flujo de inicio de sesión y las llamadas de gráficos abiertos. El cuadro de diálogo llama para publicar en su muro que todavía está guardado de los encabezados obsoletos. Para los métodos que está interesado en que serían sustituidos de la siguiente manera:
[autorizar ad.facebook: las permanentes]
FBSession *session = [[FBSession alloc] initWithAppID:appId
permissions:permissionsArray
urlSchemeSuffix:urlSuffix
tokenCacheStrategy:nil];
[FBSession setActiveSession:session];
if(allowLoginUI == YES)
{
[session openWithBehavior:FBSessionLoginBehaviorUseSystemAccountIfPresent completionHandler:handler];
}
else if(session.state == FBSessionStateCreatedTokenLoaded)
{
[session openWithCompletionHandler:^(FBSession *_session, FBSessionState status, NSError *error) {
[self _sessionStateChanged:_session state:status error:error];
}];
}
[session release];
ver para obtener instrucciones adicionales de aplicación de inicio de sesión
https://developers.facebook.com/docs/howtos/share-appid-across-multiple-apps-ios-sdk/
https://developers.facebook.com/docs/howtos/login-with-facebook-using-ios-sdk/
shouldExtendAccessToken, extendAccessTokenIfNeeded, - estos ya no están y el SDK de Facebook implementa menciona el almacenamiento en caché y extiende el token si es necesario. Si ve en mi primer snippit de código si se supone que no debe mostrar loginUI, pero el estado de la sesión fue en FBSessionStateCreatedTokenLoaded, aún desea abrir la sesión. Cuando la sesión está en el estado FBSessionStateCreatedTokenLoaded que significa:
Uno de los dos estados de las sesiones iniciales que indican que una ficha en caché era cargado; cuando una sesión está en este estado, una llamada para abrir * resultará en una sesión abierta, sin UX o aplicación de conmutación de
la caja del SessionLoginSample para obtener más información.
isSessionValid - esto es ahora
FBSession.activeSession.isOpen
diálogo: andParams @ "piensos": params andDelegate: delegar - esto sigue siendo la misma, sin embargo hay que crear la instancia de facebook como esto antes usarlo:
Facebook *facebook = [[Facebook alloc] initWithAppId:FBSession.activeSession.appID andDelegate:nil];
facebook.accessToken = FBSession.activeSession.accessToken;
facebook.expirationDate = FBSession.activeSession.expirationDate;
//... normal code to setup a feed post
[facebook dialog:@"feed" andParams:params andDelegate:self];
[facebook release];
ver https://developers.facebook.com/docs/howtos/feed-dialog-using-ios-sdk/ para obtener más información
"https://graph.facebook.com/me?fields=id,email,first_name & access_token =", - Las llamadas a gráficos ahora son mucho más simples. También puede agruparlos juntos con bastante facilidad también.
//[facebook requestWithGraphPath:@"me" andDelegate:self]; would become
[FBRequestConnection startForMeWithCompletionHandler:^
(FBRequestConnection *connection, id result, NSError *error) {}];
//[facebook requestWithGraphPath:@"me/albums" andParams:params andHttpMethod:@"POST" andDelegate:self]; would become
[FBRequestConnection startWithGraphPath:@"me/albums"
parameters:params
HTTPMethod:@"POST"
completionHandler:^(FBRequestConnection *connection, id result, NSError *error) {}];
ver https://developers.facebook.com/docs/howtos/batch-requests-ios-sdk/ para obtener más información
GRACIAS por la respuesta reflexiva y detallada, muy útil. Cuando tenga la oportunidad de validar estos, me aseguraré de marcar esto como la respuesta correcta. gracias de nuevo. – leontx
Es curioso porque tengo que hacer este trabajo exacto y me preguntaba cuánto tiempo te tomó para poder darte una estimación decente. Gracias –
@JonathanDixon no tan largo probablemente 2-3 horas. El nuevo SDK todavía incluye TODO el antiguo SDK para que pueda atacar este proyecto en pedazos. Simplemente reemplace lo que necesita y deje el resto usando el sistema anterior. Luego, actualice lentamente. – odyth