Si l'application Facebook native est installée sur l'iPhone. Comment ouvrir un lien Facebook dans l'application Facebook native depuis mon application ? Dans le cas d'une ouverture par Safari, le lien est le même que :
Merci.
Si l'application Facebook native est installée sur l'iPhone. Comment ouvrir un lien Facebook dans l'application Facebook native depuis mon application ? Dans le cas d'une ouverture par Safari, le lien est le même que :
Merci.
Voici quelques schémas utilisés par l'application Facebook, il y en a une tonne d'autres sur le lien source :
NSURL *url = [NSURL URLWithString:@"fb://profile/<id>"];
[[UIApplication sharedApplication] openURL:url];
fb://profile - Ouvre l'application Facebook sur le profil de l'utilisateur.
fb://friends - Ouvre l'application Facebook à la liste d'amis.
fb://notifications - Ouvrir l'application Facebook à la liste des notifications (REMARQUE : il semble y avoir un bug avec cette URL. La page des notifications s'ouvre. Cependant, il n'est pas possible de naviguer vers une autre page de l'application Facebook.)
fb://feed - Ouvre l'application Facebook sur le fil d'actualité.
fb://events - Ouvre l'application Facebook sur la page des événements.
fb://requests - Ouvre l'application Facebook à la liste des demandes.
fb://notes - Ouvre l'application Facebook à la page des notes.
fb://albums - Ouvrez l'application Facebook à la liste des albums photos.
Si, avant d'ouvrir cette URL, vous voulez vérifier si l'utilisateur a utilisé l'application Facebook, vous pouvez faire ce qui suit (comme expliqué dans une autre réponse ci-dessous) :
if ([[UIApplication sharedApplication] canOpenURL:nsurl]){
[[UIApplication sharedApplication] openURL:nsurl];
}
else {
//Open the url as usual
}
Puis-je ouvrir cette url dans safari avec une connexion ? J'utilise Facebook dans toute mon application. Je me suis déjà connecté à Facebook. Mais si j'ouvre une page url Facebook avec Safari. Il demande à nouveau de se connecter. Comment puis-je résoudre ce problème ?
@sathiamoorthy : si vous trouvez la solution à votre question, merci de m'en informer également :)
Attention, les programmes ne sont pas officiellement pris en charge par facebook, ils peuvent changer/cesser de fonctionner à tout moment.
Il suffit d'utiliser [https://graph.facebook.com/(votre\_nom\_d'utilisateur](https://graph.facebook.com/(your_username) ou le nom de la page) pour obtenir l'ID de votre page et après vous pouvez voir tous les détenus et votre ID
après dans votre application IOS, utilisez :
NSURL *url = [NSURL URLWithString:@"fb://profile/[your ID]"];
[[UIApplication sharedApplication] openURL:url];
Cela ne fonctionne pas. { error : { message : "Un jeton d'accès est nécessaire pour demander cette ressource.", type : "OAuthException", code : 104, fbtrace_id : "AlTl1RaNO9b" } }
J'ai fait cela dans MonoTouch avec la méthode suivante, je suis sûr qu'une approche purement basée sur Obj-C ne serait pas trop différente. J'ai utilisé cette méthode à l'intérieur d'une classe dont les URLs changeaient parfois, c'est pourquoi je ne l'ai pas mise dans une instruction if/elseif.
NSString *myUrls = @"fb://profile/100000369031300|http://www.facebook.com/ytn3rd";
NSArray *urls = [myUrls componentsSeparatedByString:@"|"];
for (NSString *url in urls){
NSURL *nsurl = [NSURL URLWithString:url];
if ([[UIApplication sharedApplication] canOpenURL:nsurl]){
[[UIApplication sharedApplication] openURL:nsurl];
break;
}
}
La pause n'est pas toujours appelée avant que votre application ne passe à Safari/Facebook. Je suppose que votre programme s'arrêtera à cet endroit et l'appellera lorsque vous y reviendrez.
Je sais que la question est ancienne, mais à l'appui des réponses ci-dessus, je voulais partager mon code de travail. Il suffit d'ajouter ces deux méthodes à n'importe quelle classe.le code vérifie si l'application facebook est installée, si elle ne l'est pas, l'url est ouverte dans un navigateur.et si des erreurs se produisent en essayant de trouver le profileId, la page sera ouverte dans un navigateur. Il suffit de passer l'url (exemple, http://www.facebook.com/AlibabaUS ) à openUrl : et cela fera toute la magie. J'espère que cela aidera quelqu'un !
NOTE : UrlUtils était la classe qui avait le code pour moi, vous pourriez avoir à la changer pour quelque chose d'autre pour répondre à vos besoins.
+(void) openUrlInBrowser:(NSString *) url
{
if (url.length > 0) {
NSURL *linkUrl = [NSURL URLWithString:url];
[[UIApplication sharedApplication] openURL:linkUrl];
}
}
+(void) openUrl:(NSString *) urlString
{
//check if facebook app exists
if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"fb://"]]) {
// Facebook app installed
NSArray *tokens = [urlString componentsSeparatedByString:@"/"];
NSString *profileName = [tokens lastObject];
//call graph api
NSURL *apiUrl = [NSURL URLWithString:[NSString stringWithFormat:@"https://graph.facebook.com/%@",profileName]];
NSData *apiResponse = [NSData dataWithContentsOfURL:apiUrl];
NSError *error = nil;
NSDictionary *jsonDict = [NSJSONSerialization JSONObjectWithData:apiResponse options:NSJSONReadingMutableContainers error:&error];
//check for parse error
if (error == nil) {
NSString *profileId = [jsonDict objectForKey:@"id"];
if (profileId.length > 0) {//make sure id key is actually available
NSURL *fbUrl = [NSURL URLWithString:[NSString stringWithFormat:@"fb://profile/%@",profileId]];
[[UIApplication sharedApplication] openURL:fbUrl];
}
else{
[UrlUtils openUrlInBrowser:urlString];
}
}
else{//parse error occured
[UrlUtils openUrlInBrowser:urlString];
}
}
else{//facebook app not installed
[UrlUtils openUrlInBrowser:urlString];
}
}
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
5 votes
Votre méthode ne fonctionne pas avec la nouvelle application FB (août 2012)... L'application fb://profile/<id> ne fonctionne pas.
9 votes
Pour ajouter à ce que @yonix a dit, vous pouvez trouver l'identifiant de la page en allant sur graph.facebook.com/AlibabaUS . Même si vous voulez une page, utilisez "profil" dans l'URL. De même, si vous pensez qu'un utilisateur n'a peut-être pas installé l'application FB, appelez canOpenURL : avant openURL :