2016-03-04 55 views
0

我正在構建一個使用Facebook獲得牽引力的iOS應用程序。我想邀請一些朋友,該用戶從列表中選擇,但沒有顯示Facebook確認對話框,我希望在幕後發生。是否可以在不顯示Facebook對話框的情況下邀請朋友?

閱讀文檔有財產frictionlessRequestsEnabled,但即使是顯示對話框,我可以選擇在將來禁用顯示對話框。有沒有其他方法可以做到這一點?

+1

好了,希望不是。如何防止惡意網站在不知情的情況下邀請用戶的朋友? –

+0

這是iOS應用程序,它更個人化 – MegaManX

+1

仍然 - 看起來FB不太可能允許這樣的事情。 –

回答

3

許多應用程序邀請所有朋友而不顯示Facebook對話框。通過修改FBSDK是可能的。只需將FBSDK存儲庫克隆到本地計算機,在Xcode和Command + B中編輯以構建自己使用的框架。下面是一些有關在FBSDK邀請於iOS:

FBSDKWebDialogView
FBSDKWebDialog
FBSDKGameRequestDialog

要獲得生成對話視圖的網址:

在FBSDKWebDialog.m在-(BOOL)show

NSURL *URL = [self _generateURL:&error]; 

這是t他生成的URL用於加載Web視圖。可以在不使用Web對話框視圖的情況下使用此URL,只要它僅生成一次(每次生成URL時都會重置訪問令牌)並在移動瀏覽器上使用。

邀請沒有對話框

您可以使用JavaScript來模擬做這樣的事情(假設你指定你的參數和收件人正確,你的應用已經通過Facebook建立點擊開始按鈕)

在FBSDKWebDialogView.m在- (void)webViewDidFinishLoad:(UIWebView *)webView

[NSTimer scheduledTimerWithTimeInterval:.1 target:[NSBlockOperation blockOperationWithBlock:^{ NSString * jsCallBack = [NSString stringWithFormat:@"document.getElementById(\"u_0_0\").click();"]; 

[webView stringByEvaluatingJavaScriptFromString:jsCallBack]; 

[webView stringByEvaluatingJavaScriptFromString:@"document.getElementById(\"u_0_0\").click();"]; }] selector:@selector(main) userInfo:nil repeats:NO ]; 

只要webView的存在某個地方,你可能能夠做到日對用戶的干擾很小。您可以將webView框架設置得非常小,或者完全隱藏視圖。

然而,Facebook正在嚴厲打擊這類事情,未來可能會有更多的保護措施。

FBSDK回購在這裏: https://github.com/facebook/facebook-ios-sdk

+0

雖然這個鏈接可能回答這個問題,但最好在這裏包含答案的重要部分,並提供供參考的鏈接。如果鏈接頁面更改,則僅鏈接答案可能會失效。 - [來自評論](/ review/low-quality-posts/12921820) – fractalwrench

+0

感謝您的提示。對於SO來說是新的。修改了答案。 –

+0

謝謝!我一直在尋找這個多年。 –