Como Mountain Lion ahora oficialmente ha integrado Facebook quería jugar un poco con Accounts.framework
y Social.framework
de OS X.cuentas de Facebook de acceso en OS X Mountain Lion
puedo configurar una aplicación en la App y se utiliza Facebook desarrollador el código siguiente para solicitar el acceso a las cuentas de Facebook del usuario conectado:
ACAccountStore *acStore = [[ACAccountStore alloc] init];
ACAccountType *accType = [acStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook];
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:FB_APP_ID, ACFacebookAppIdKey, @"read_stream, publish_stream", ACFacebookPermissionsKey, ACFacebookAudienceFriends, ACFacebookAudienceKey, nil];
[acStore requestAccessToAccountsWithType:accType options:options completion:^(BOOL granted, NSError *error) {
if (granted) {
NSLog(@"Accounts: %@", acStore.accounts);
NSLog(@"Access granted");
} else {
NSLog(@"Access denied");
}
}];
Ahora siempre sale el error Error Domain=XPCObjectsErrorDomain Code=2 "The operation couldn’t be completed. (XPCObjectsErrorDomain error 2.)"
Cuando lancé la App de Xcode los primeros 2-3 veces, OS X se muestra el diálogo de confirmación "XYZ quiere acceder a sus cuentas de Facebook", hice clic en Aceptar y recibí un error que decía algo así como "La aplicación aún no está instalada". Este error ahora "desapareció" y me aparece el error mencionado anteriormente.
Mi pregunta es: ¿Tengo que configurar algo especial en mi Xcode Project (Info.plist) o en Facebook Developer App para que funcione con OS X? ¿O me estoy perdiendo algo en el código? Ejemplos y tutoriales con respecto a este parecen ser muy raros: -/
ya vi la WWDC 2012 Vídeo sobre el Twitter/Facebook Integración pero utiliza casi exactamente el código que he usado.
Cualquier ayuda es apreciada :-)
Cheers, Björn
actualización
He resuelto el problema, acabo de no haber leído los documentos con suficiente cuidado ;-) Tengo que pasar el permisos como NSArray y no como una cadena. He modificado el diccionario opciones para tener este aspecto:
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys: FB_APP_ID, ACFacebookAppIdKey, [NSArray arrayWithObjects:@"read_stream", @"publish_stream", @"email", @"user_likes", nil], ACFacebookPermissionsKey, ACFacebookAudienceFriends, ACFacebookAudienceKey, nil];
Ahora OS X muestra una alerta que me pregunta si quiero permitir que la aplicación para enviar a Facebook en mi nombre, yo clic en Aceptar y una nueva de error que resulta en ningún acceso a las cuentas de Facebook:
Error Domain=com.apple.accounts Code=7 "The Facebook server could not fulfill this access request: The app must ask for a basic read permission at install time."
ya he modificado los permisos a ser sólo email
o simplemente user_likes
pero todo resultó en el mismo error. Si sólo solicitar el acceso a read_stream
el acceso se concede pero los resultados en el error de OAuth 190 con el mensaje Error validating access token: User XXXXXX has not authorized application XXXXXX.
Actualización 2:
ahora he resuelto todos mis problemas, ver mi respuesta a continuación.
Hola, ¿puede contestar mi pregunta? http://stackoverflow.com/questions/12644229/ios-6-facebook-posting-procedure-ends-up-with-permissions-alert-view – Stas
Aunque traté de todo lo que publicaste aquí, me refiero a diferentes tipos de permisos ..el resultado es el mismo :( – Stas
¡Qué bien hecho! ... También me ayudó mucho – Warewolf