Facebook authorize w/permissions request yield “Page Not Found”

和自甴很熟 提交于 2019-12-08 18:51:29

问题


Somewhere along the way in the past few weeks, the authorize Facebook call in iOS fails with a "Page Not Found". This happens for any user that has not installed the app or if the app's permissions have changed and the user must approve the additional permissions. This happens whether the Facebook app handles the user authentication or Safari or the popup dialog. All redirect to a "Page Not Found" page.

Digging through the debugger, I found the initial URL request to be (app id replaces "[app_id]") for the login screen:

https://m.facebook.com/dialog/oauth?type=user_agent&display=touch&redirect_uri=fb[app_id]%3A%2F%2Fauthorize&sdk=2&scope=user_location%2Cuser_relationships%2Cemail%2Cpublish_stream%2Coffline_access&client_id=[app_id]

The following URL is being sought by the login attempt (I assume by the URL that the user has insufficient permissions):

http://www.facebook.com/dialog/permissions.request?_path=permissions.request&app_id=[appid]&redirect_uri=fb[appid]%3A%3F%3Fauthorize&sdk=2&display=touch&type=user_agent&fbconnect=1&perms=user_location%2Cuser_relationships%2Cemail%2Cpublish_stream%2Coffline_access&sso=iphone-safari&from_login=1

I've checked that the Bundle ID listed in Xcode is the same as that listed for my app's settings in Facebook.

Because the permissions page is not showing, new users cannot add the app. Old versions of my app that used to work are failing in the same way as well. What could be the problem?


回答1:


Okay, I'm feeling a bit stupid.

The problem was that I had Sandboxing turned on in the app settings in the Facebook page. Why the error page was so obtuse is beyond me.

  1. In Facebook developer settings: https://developers.facebook.com, edit your app settings.
  2. Select the "Advanced" tab, under "Settings" on the left side.
  3. Make sure that "Sandbox Mode" is not enabled.



回答2:


I had the same problem, when my App ID was incorrect in Info Plist.

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

I found out, that not the Apple App ID must be put there, but Facebook App ID. (General in your app settings on Facebook developers web page, under App Name there are App ID and App Secret)

There 3 last numbers are hidden by xxx.




回答3:


If the link you post is exactly the link in your application, then "redirect_uri" parameter is missing the letter "e". "fbconnect" as well.

http://www.facebook.com/dialog/permissions.request?_path=permissions.request&app_id=[appid]&redirct_uri=fb[appid]%3A%3F%3Fauthorize&sdk=2&display=touch&type=user_agent&fbocnnect=1&perms=user_location%2Cuser_relationships%2Cemail%2Cpublish_stream%2Coffline_access&sso=iphone-safari&from_login=1

Besides, you should make sure that your [appid] is correct, and fb[appid]%3A%3F%3Fauthorize is the correct FB handler link of your application.



来源:https://stackoverflow.com/questions/7553076/facebook-authorize-w-permissions-request-yield-page-not-found

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!