簡體   English   中英

流星1.3+帳戶Facebook登錄iOS無法正常工作

[英]Meteor 1.3+ Accounts Facebook Login for iOS not working

我一直試圖找到一個解決方案(遺憾的是現在3個月)使用iOS上的Meteors Accounts Facebook登錄Facebook。 我已經嘗試了谷歌搜索將提出的所有內容,在Meteor論壇上進行了解決,甚至打開了Github問題。

但這個問題仍然逃脫了我。 一切都在桌面上工作正常,但是當我在手機上測試時,我收到Facebook錯誤“未登錄。您尚未登錄。請登錄並重試”

我已經找到了其他幾個有這個問題的人,並且在完整的證據答案上輸入很少。 在這一點上,我開始變得絕望。

直到Meteor升至1.3之后,這才成為問題。

在此輸入圖像描述

它通過以下設置為我工作

  1. 最新版本的Meteor和Xcode
  2. 與帳戶相關的流星包

     accounts-base accounts-password accounts-facebook accounts-google useraccounts:materialize service-configuration accounts-ui splendido:accounts-meld 
  3. 使用渲染模板

     {{> atForm}} 
  4. 我還添加了2個cordova插件(用於在.meteor文件夾中創建一個名為cordova-plugins和以下內容

     cordova-plugin-meteor-webapp@https://github.com/meteor/cordova-plugin-meteor-webapp.git#8bf95eed3f313299fc2de33658866278eea2cdc5 cordova-plugin-inappbrowser@https://github.com/apache/cordova-plugin-inappbrowser.git#2df0e72c36f1fda35c04b3b06bd7beaafaae6ee9 
  5. 還要確保在html的head標簽中有以下行

     <meta http-equiv="Content-Security-Policy" content="default-src * 'unsafe-inline' 'unsafe-eval' data: " /> 
  6. 最后在mobile-config.js文件中添加以下行

     App.accessRule('http://*', {type: 'navigation'}); App.accessRule('https://*', {type: 'navigation'}); 

在構建之前還要運行meteor reset命令

這可能是GitHub問題中的問題

根據作者的說法 - iOS 10中的WKWebView似乎不再將Meteor Cordova CSP(default-src *)應用於websockets,並使用以下消息阻止連接。 當他們的用戶更新到iOS 10 (已經發布)時,這會破壞生成websocket連接的生產應用程序 (可能只有默認連接到Meteor服務器以外的連接?不確定 )。

問題在於代碼行

<meta http-equiv="Content-Security-Policy" content="default-src * data: blob: 'unsafe-inline' 'unsafe-eval';">

您可以嘗試替換它

<meta http-equiv="Content-Security-Policy" content="default-src * 'self' data: blob: 'unsafe-inline' 'unsafe-eval' wss://*.ourdomain.tld ">

在文件https://github.com/meteor/meteor/blob/master/packages/boilerplate-generator/boilerplate_web.cordova.html

然后通過運行meteor update boilerplate-generator更新Meteor 1.4

您也可以嘗試更新meteor update --release 1.4.2-beta.4如鏈接中所述

此包在構建過程中運行,並且在項目級別更新此包不會更改用於構建應用程序的文件。

如果它仍然無法工作,那么這位作者建議

你可以添加一個簡單的插件meteor add cordova:meteor-ios10-csp-fix@0.1.0

回購在這里 ,npm頁面就在這里

希望這可以幫助。

完全歸屬於github鏈接和上面提到的作者

為了讓我能夠工作,我升級到最新版本的meteor,accounts-facebook等。

接下來,我使用Facebook登錄部署了該應用程序的Web版本。 然后我測試了web app facebook登錄。 一旦在您的Facebook應用設置中添加了有效的oauth重定向URI,一切都很好。 這些應該類似於https://example.com

然后我運行終端meteor run ios-device --settings settings.json --mobile-server https://example.com

我的mobile-config.js文件也包含@Afzal Hossain App.accessRule('http://*', {type: 'navigation'}); App.accessRule('https://*', {type: 'navigation'}); App.accessRule('http://*', {type: 'navigation'}); App.accessRule('https://*', {type: 'navigation'});

我的設備上的應用程序用於登錄。

不再需要cordova插件或CSP策略,因為流星更新使這些不必要。

我通過在Facebook App的“有效OAuth重定向URI”中指定正確的Url來解決相同的問題。

早些時候,我已經指定了http://<domainname>/_oauth/facebook?close

這沒用。 經過一些調試,我發現URL應該是

http://<domainname>:<port>/_oauth/facebook?close (帶端口號)

因此,如果服務器在http://localhost:3000 ,它將是http://<device ip/external ip>:3000/_oauth/facebook?close

並且,如果您使用--server = http://www.domainname.com運行應用程序,那么它將是http://www.domainname:80/_oauth/facebook?close (HTTP端口80)

現在,我看到了Facebook App登錄頁面,可以登錄。

但是現在我很難在身份驗證后關閉InAppBrowser。 在這方面的任何幫助都會很棒!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM