Вопрос по facebook, ios, xcode, iphone – Откройте ссылку на Facebook с помощью родного приложения Facebook на iOS

60

Если на iPhone установлено нативное приложение Facebook. Как открыть ссылку на Facebook в родном приложении Facebook из моего приложения. В случае открытия Safari, ссылка такая же как:

http://www.facebook.com/AlibabaUS

Спасибо.

Ваш путь не работает с новым приложением FB (август 2012 г.) ... The fb: // profile / & lt; id & gt; делает yonix
Чтобы добавить к тому, что сказал @yonix, вы можете найти идентификатор страницы, перейдя вgraph.facebook.com/AlibabaUS, Даже если вы хотите страницу, используйте & quot; профиль & quot; в URL. Также, если вы считаете, что у пользователя может не быть установлено приложение FB, вызовите canOpenURL: before openURL: Ben Flynn

Ваш Ответ

9   ответов
3

swift 3

if let url = URL(string: "fb://profile/<id>") {
        if #available(iOS 10, *) {
            UIApplication.shared.open(url, options: [:],completionHandler: { (success) in
                print("Open fb://profile/<id>: \(success)")
            })
        } else {
            let success = UIApplication.shared.openURL(url)
            print("Open fb://profile/<id>: \(success)")
        }
 }
Вы используете FB SDK?
Как получить этот идентификатор?
Вот ссылка может быть вам помочьdevelopers.facebook.com/docs/apps/…
когда вы создаете фб аккаунт то фб создаете уникальный идентификатор пользователя. Пример выше, что у нас есть, мы открываем профиль пользователя на родном приложении FB
Хорошо. Что я хочу, как открыть другой профиль в нативном приложении Facebook? Я много ищу, но ничего не получаю. Подробности вопроса здесь:stackoverflow.com/questions/51207496/…
8

что вопрос старый, но в поддержку вышеприведенных ответов я хотел бы поделиться своим рабочим кодом. Просто добавьте эти два метода в любой класс. Код проверяет, установлено ли приложение facebook, если оно не установлено, URL открывается в браузере. И если при попытке найти profileId возникают ошибки, страница открывается в браузере. Просто передайте URL (например,http://www.facebook.com/AlibabaUS) к openUrl: и он сделает всю магию. Надеюсь, это поможет кому-то!

NOTE: UrlUtils was the class that had the code for me, you might have to change it to something else to suite your needs.

+(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];
    }

}
Это больше не будет работать:"message": "(#803) Cannot query users by their username (user.name)"
1

page, ты можешь использовать"fb://page/{Page ID}"

Идентификатор страницы можно найти под вашей страницей в разделе о нижней части страницы.

В моем случае в Xamarin.Forms вы можете использовать этот фрагмент, чтобы открыть его в приложении, если оно доступно, в противном случае в браузере.

Device.OpenUri(new Uri("fb://page/{id}"));

10

я уверен, что подход, основанный исключительно на Obj-C, не будет слишком отличаться. Я использовал это внутри класса, в котором время от времени менялись URL-адреса, поэтому я просто не поместил его в оператор 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;
    }
}

Перерыв не всегда вызывается до того, как ваше приложение изменится на Safari / Facebook. Я предполагаю, что ваша программа остановится и вызовет ее, когда вы вернетесь к ней.

Приветствия для этого редактирования. Это код obj-c того кода, который я первоначально разместил.
1

страница откроется при выполнении следующего кода. Если приложение Facebook не вошло в систему при выполнении кода, пользователь будет перенаправлен в приложение Facebook для входа в систему, а затем после подключения Facebook не будет перенаправлен на страницу!

NSURL *fbNativeAppURL = [NSURL URLWithString:@"fb://page/yourPageIDHere"] [[UIApplication sharedApplication] openURL:fbNativeAppURL]
27

https://graph.facebook.com/(your_username или имя страницы), чтобы получить свой идентификатор страницы, и после того, как вы можете увидеть все задержанные и ваш идентификатор

после того, как в вашем приложении IOS использовать:

 NSURL *url = [NSURL URLWithString:@"fb://profile/[your ID]"];
 [[UIApplication sharedApplication] openURL:url];
Спасибо за график URL! Это было очень полезно
для меня это хорошо работает на iOS 9, но на iOS 8 и iOS 10 просто открывает приложение Facebook, не заходя на мою страницу
это не работает. {error: {message: & quot; токен доступа требуется для запроса этого ресурса. & quot ;, тип: & quot; OAuthException & quot ;, code: 104, fbtrace_id: & quot; AlTl1RaNO9b & quot; }}
Это была важная часть головоломки. Спасибо!
26

fb://page/… URL больше не работает. Видимо его заменилиfb://profile/…даже если страница не является профилем.

Я пытаюсь получить страницу не найдена после загрузки приложения FB. Не могу понять, почему
132

которые использует приложение Facebook, на исходной ссылке есть еще масса:

Example
NSURL *url = [NSURL URLWithString:@"fb://profile/<id>"];
[[UIApplication sharedApplication] openURL:url];
Schemes

fb://profile – Open Facebook app to the user’s profile

fb://friends – Open Facebook app to the friends list

fb://notifications – Open Facebook app to the notifications list (NOTE: there appears to be a bug with this URL. The Notifications page opens. However, it’s not possible to navigate to anywhere else in the Facebook app)

fb://feed – Open Facebook app to the News Feed

fb://events – Open Facebook app to the Events page

fb://requests – Open Facebook app to the Requests list

fb://notes – Open Facebook app to the Notes page

fb://albums – Open Facebook app to Photo Albums list

Если перед открытием этого URL вы хотите проверить, является ли пользователь приложением Facebook, вы можете сделать следующее (как объяснено в другом ответе ниже):

if ([[UIApplication sharedApplication] canOpenURL:nsurl]){
    [[UIApplication sharedApplication] openURL:nsurl];
}
else {
    //Open the url as usual
}
Source

http://wiki.akosma.com/IPhone_URL_Schemes#Facebook

Я получаю страницу, не найденную, хотя знаю, что идентификатор правильный. Есть идеи, почему это так?
Нам нужно добавить белый список вInfo.plist в iOS 9 тоже, чтобы это работало. Видеть этоuseyourloaf.com/blog/querying-url-schemes-with-canopenurl.html.
Обратите внимание, что схемы Facebook официально не поддерживаются, они могут измениться / перестать работать в любой момент.
@sathiamoorthy: если вы нашли решение своего вопроса, пожалуйста, сообщите мне тоже спасибо :)
Могу ли я открыть этот URL в Safari с логином ?. Я использую Facebook во всем моем приложении. Я уже вошел в Facebook. Но если я открываю страницу URL Facebook с сафари. Его снова просят Войти. Как я могу решить это?
0

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://www.facebook.com/comments.php?href=http://wombeta.jiffysoftware.com/ViewWOMPrint.aspx?WPID=317"]];

Для iphone вы можете запустить приложение Facebook, если оно установлено, используя URL-адрес, начинающийся с fb: //

Более подробную информацию можно найти здесь:http://iphonedevtools.com/?p=302 также здесь:http://wiki.akosma.com/IPhone_URL_Schemes#Facebook

Украдены с вышеуказанного сайта:

fb://profile – Open Facebook app to the user’s profile
fb://friends – Open Facebook app to the friends list
fb://notifications – Open Facebook app to the notifications list (NOTE: there appears to be a bug with this URL. The Notifications page opens. However, it’s not possible to navigate to anywhere else in the Facebook app)
fb://feed – Open Facebook app to the News Feed
fb://events – Open Facebook app to the Events page
fb://requests – Open Facebook app to the Requests list
fb://notes - Open Facebook app to the Notes page
fb://albums – Open Facebook app to Photo Albums list

Чтобы запустить вышеуказанные URL-адреса:

NSURL *theURL = [NSURL URLWithString:@"fb://<insert function here>"];
[[UIApplication sharedApplication] openURL:theURL];
Вы не можете добавлять любые приложения на симуляторе. Вот почему он не будет работать на симуляторе
Можно ли проверить в симуляторе 6.1?
Похоже, что в iOS 7 http-URL-адреса Facebook открываются в собственном приложении Facebook, даже если они не работают (например, используя псевдоним вместо UID). Я должен вероятно подать радар.

Похожие вопросы