2011-09-26 106 views
7

在過去幾周的某個過程中,授權Facebook iOS調用失敗並顯示「Page Not Found」。對於未安裝應用程序的任何用戶或者應用程序的權限已更改且用戶必須批准其他權限,纔會發生此情況。無論Facebook應用程序處理用戶身份驗證還是Safari或彈出對話框,都會發生這種情況。所有重定向到「頁面未找到」頁面。Facebook授權w /權限請求收益「找不到頁面」

通過調試挖,我發現了登錄屏幕的初始URL請求是(應用ID替換 「[APP_ID]」):

https://m.facebook.com/dialog/oauth?類型= USER_AGENT &顯示=觸摸& REDIRECT_URI = FB [APP_ID]%3A%2F%2Fauthorize & SDK = 2 &範圍= USER_LOCATION%2Cuser_relationships%2Cemail%2Cpublish_stream%2Coffline_access & CLIENT_ID = [APP_ID]

以下URL是正在通過登錄嘗試(我通過URL假定用戶沒有足夠的權限)尋求:

http://www.facebook.com/dialog/permissions.request?_path=permissions.request & APP_ID = [APPID] & REDIRECT_URI = FB [APPID]%3A%3F%3Fauthorize & SDK = 2 &顯示=觸摸&類型= USER_AGENT & fbconnect = 1個&燙髮= USER_LOCATION%2Cuser_relationships%2Cemail%2Cpublish_stream%2Coffline_access & SSO = iphone-狩獵& from_login = 1

我已經檢查了在Xcode列出的包ID是相同的正如我在Facebook中的應用程序設置所列出的那樣。

由於未顯示權限頁面,新用戶無法添加該應用程序。過去工作的舊版本的應用程序也以相同的方式失敗。可能是什麼問題呢?

+0

好的,它__必須與應用程序的FB設置有關。但不知道是什麼。我已經設置了FB DemoApp來使用我的失敗應用程序的app_id,它失敗了(所以我知道它不一定是我的代碼)。然後我將其設置爲不同的應用程序ID,我不再開發;它的工作原理!我無法分辨兩種不同配置之間有什麼區別。啊! – wrlee

回答

0

如果您發佈的鏈接恰好是您應用程序中的鏈接,那麼「redirect_uri」參數缺少字母「e」。 「fbconnect」也是如此。

http://www.facebook.com/dialog/permissions.request?_path=permissions.request & APP_ID = [APPID] & redirct_uri = FB [APPID]%3A%3F%3Fauthorize & SDK = 2 &顯示=觸摸&類型= USER_AGENT & fbocnnect = 1個&燙髮= USER_LOCATION%2Cuser_relationships%2Cemail%2Cpublish_stream%2Coffline_access & SSO = iphone-狩獵& from_login = 1

此外,您應該確保您的[appid]是正確的,並且fb[appid]%3A%3F%3Fauthorize是您的應用程序的正確FB處理程序鏈接。

+0

不,我不得不抄錄它,所以這是一個錯字。您能否授權iOS應用程序的新用途? – wrlee

+0

用於正常工作的代碼。我一直在測試它作爲一個授權用戶很長一段時間,並沒有注意到什麼時候停止工作。第二個網址由Facebook生成,這是我以需要允許應用程序權限的用戶身份登錄的結果。第一個URL由iOS SDK生成,並繼續適用於已允許應用程序權限的用戶。 – wrlee

+0

@wrlee:不,我只在Facebook上集成了網站,但OAuth流程應該是一樣的。我檢查了網址,它適用於我的應用程序。關於Facebook設置的變化,我注意到FB會強制https。它對你的應用程序有什麼影響嗎? –

5

好吧,我感覺有點愚蠢。

問題是我在Facebook頁面的應用程序設置中打開了沙盒。爲什麼錯誤頁面是如此愚蠢是超出我的。

  1. 在Facebook開發人員設置:https://developers.facebook.com中,編輯您的應用程序設置。
  2. 選擇左側「設置」下的「高級」選項卡。
  3. 確保「沙箱模式」未啓用。
+0

這對我來說也是一個老麻煩。在沙盒模式下,只有您添加到開發團隊的用戶才能訪問該應用,否則會重新發布:未找到內容。 –

+0

啊,這個問題對我來說也是,即使我是應用程序管理員。我認爲這是因爲我在android上登錄Facebook之後創建了facebook應用*。解決方案:在Android上註銷Facebook應用程序,重新登錄。 – Timmmm

3

當我的App ID在Info Plist中出現錯誤時,我遇到了同樣的問題。

<key>CFBundleURLTypes</key> 
<array> 
    <dict> 
     <key>CFBundleURLSchemes</key> 
     <array> 
      <string>fb305639062848xxx</string> 
     </array> 
    </dict> 
</array> 

我發現,不是Apple App ID必須放在那裏,而是Facebook App ID。 (一般在Facebook開發人員網頁上的應用程序設置中,在應用程序名稱下有應用程序ID和應用程序密碼)

最後3位數字被xxx隱藏。