Ứng dụng Facebook: localhost không còn hoạt động như miền ứng dụng


94

Tôi đã viết một trò chơi cho Facebook bằng Rails và jQuery. Kể từ khi tôi bắt đầu sử dụng SDK Javascript của Facebook, việc sử dụng localhost làm miền ứng dụng dường như hoạt động tốt. Tôi đã có thể thử nghiệm trò chơi của mình ở cả cục bộ và trên Heroku.

Trong ngày hôm qua, có vẻ như Facebook đã thực hiện một bản cập nhật lớn đối với giao diện người dùng dành cho nhà phát triển của họ. Bây giờ nếu tôi thêm localhost làm miền ứng dụng, nó sẽ gây ra lỗi sau:

Điều này phải bắt nguồn từ URL Canvas, URL Canvas bảo mật, URL trang web, URL trang web di động, URL tab trang hoặc URL tab trang bảo mật. Kiểm tra và sửa các miền sau: localhost

Trò chơi của tôi hiện không hoạt động cục bộ và tôi gặp lỗi khi SDK Javascript đăng nhập người dùng:

Mã lỗi API: 191 Mô tả lỗi API: URL được chỉ định không thuộc sở hữu của ứng dụng Thông báo lỗi: Redirect_uri không hợp lệ: Cấu hình ứng dụng không cho phép URL đã cho.

Điều này không xảy ra khi tôi triển khai trò chơi của mình, vì herokuapp.com được coi là miền ứng dụng hợp lệ.

Tôi làm cách nào để phát triển và kiểm tra trò chơi của mình nếu tôi không thể sử dụng localhost hoặc 127.0.0.1 nữa?


Bạn có những giá trị nào cho URL Canvas, URL Canvas an toàn, URL trang web, URL trang web di động, URL tab trang hoặc URL tab trang bảo mật?
Igy

2
Này các bạn, tôi hiểu rồi, bạn phải tạo một "ứng dụng thử nghiệm" mới, họ nên đề cập đến nó trên trang cài đặt ứng dụng, 1h tìm kiếm để cuối cùng nó hoạt động trên localhost: port
Louis Grellet

@LouisGrellet, Chà, tôi nhận được thông báo "Miền cấp cao nhất không được phép". Như bạn đã nói, f ***** g
Abhijit Sarkar,

1
"Trong Cài đặt oAuth của ứng dụng khách, nơi có thông báo Sử dụng Chế độ nghiêm ngặt cho URI chuyển hướng, hãy đảm bảo rằng nó được đặt thành Không và lưu lần truy cập." - wp-native-articles.com/blog/news/…
eflat, 11/1017

Câu trả lời:


241

Giao thức dường như tiếp tục thay đổi và câu trả lời được chấp nhận không hoạt động với tôi hôm nay. Trong trường hợp nó giúp ích cho những người tìm kiếm khác, đây là những gì đã làm việc cho tôi:

  • Tất cả các thay đổi đã được thực hiện trên trang Cài đặt trong tab Cơ bản

1.) Ở giữa dưới hộp tùy chọn đầu tiên, hãy nhấp vào "+ Thêm nền tảng" và chọn "Trang web" (hoặc bất kỳ thứ gì phù hợp với ứng dụng của bạn.)

2.) Trong hộp xuất hiện cho trang web bạn vừa thêm: URL trang web: http://localhost:3000/

3.) Trong hộp phía trên (Cài đặt => Cơ bản): Miền ứng dụng: localhost

4.) Ở dưới cùng bên phải - nhấp vào "Lưu thay đổi"

5.) Đảm bảo rằng bạn đã sao chép và dán đúng ID ứng dụng vào mã của mình. (ID ở ô đầu tiên trên trang đó nếu bạn cần lại.)


1
Cảm ơn bạn đã cập nhật câu trả lời. Thật vậy, có vẻ như câu trả lời ban đầu không còn hoạt động (vẫn còn, cảm ơn bạn vì câu trả lời ban đầu của bạn Camilo và Rareclass). Thật tiếc khi Facebook dường như không bao giờ công bố những thay đổi này.
Ravenstine

1
Facebook gần đây phải đã sửa lỗi này để hoạt động localhostvì điều này trước đây không hoạt động trước đây. Cảm ơn vì câu trả lời hay.
dbasch

25
Lưu ý rằng URL của bạn cũng phải được liệt kê trong Cài đặt> Nâng cao> URI chuyển hướng OAuth hợp lệ .
Kara Brightwell

3
Điều này dường như không hoạt động nữa :( Tôi bị chặn URL: Chuyển hướng này không thành công vì URI chuyển hướng không được liệt kê trong danh sách cho phép trong Cài đặt OAuth ứng dụng khách của ứng dụng. Đảm bảo rằng Đăng nhập OAuth ứng dụng khách và web được bật và thêm tất cả các miền ứng dụng của bạn làm OAuth hợp lệ URI chuyển hướng.
Maria Ines Parnisari

3
Bạn không được phép sử dụng 'http' nữa. Nó phải là 'https'.
iJames

30
  1. Truy cập trang cài đặt Ứng dụng của bạn trong http://developers.facebook.com
  2. Nhấp vào mũi tên thả xuống ở trên cùng bên trái (bên cạnh tên ứng dụng của bạn) và nhấp vào "Tạo ứng dụng thử nghiệm" và đặt tên cho ứng dụng đó
  3. Trong Cài đặt> Cơ bản của Ứng dụng thử nghiệm mới đó, đặt Miền ứng dụng là "máy chủ cục bộ"
  4. Đồng thời đặt URL của Trang web là " http: // localhost: 8888 " (hoặc bất kỳ cổng nào bạn đang sử dụng).
  5. QUAN TRỌNG: ứng dụng này có ID ứng dụng và Bí mật ứng dụng khác với ứng dụng trực tuyến của bạn. Vì vậy, bước cuối cùng: đảm bảo rằng bạn cập nhật mã nằm trong máy chủ cục bộ của mình bằng ID ứng dụng thử nghiệm và Bí mật ứng dụng. Ngược lại, mã nằm trong máy chủ trực tiếp phải sử dụng ID và Bí mật của ứng dụng chính.

Giải pháp hợp lý / hiện đại nhất so với việc cố gắng định cấu hình tài khoản sản của bạn cũng hoạt động với môi trường phát triển.
Carl Edwards

13

Bạn vẫn có thể kiểm tra ứng dụng của mình mà không cần triển khai nó trên một máy chủ từ xa như heroku. Mẹo là cập nhật etc/hoststệp theo cách này:

127.0.0.1 mydomain.com

Sau đó, trên cài đặt của Ứng dụng Facebook, nhập [ http: //] mydomain.com, không có "[" và "]"

Nó đã làm việc cho tôi theo cách này


Nó sẽ không hoạt động nếu bạn sử dụng một cổng không chuẩn, điều mà mọi người thường làm nếu họ phát triển nhiều ứng dụng song song.
mgol

1
Nó sẽ hoạt động, tôi đã sử dụng python -m SimpleHTTPServer để phân phát trên cổng 8000 và example.com:8000/test-facebook.html , cung cấp kết quả mong đợi. Tôi giả định rằng bạn đã đăng ký 127.0.0.1 example.com trong / etc / hosts
Patrick

Tốt để biết! Vì vậy, họ dường như bỏ qua cổng sau đó, kỳ lạ.
mgol

9

Đối với tất cả những ai đang băn khoăn với điều này trong năm 2017. Giao diện đã thay đổi một lần nữa. Tôi muốn bình luận điều này cho câu trả lời nhưng tôi không có đủ danh tiếng. Giờ đây, url localhost của ứng dụng của bạn phải được sao chép vào ba nơi. Hiện tại, (ngày 26 tháng 10 năm 2017), trình tự là:

1.) Nhấp vào "Cài đặt" ở menu bên trái.

2.) Ở giữa dưới hộp tùy chọn đầu tiên, hãy nhấp vào "+ Thêm nền tảng" và chọn "Trang web" (hoặc bất kỳ thứ gì phù hợp với ứng dụng của bạn.)

3.) Trong hộp xuất hiện cho trang web bạn vừa thêm, hãy sao chép url trang web localhost của bạn (fe http: // localhost: 3000 / )

4.) Trong hộp phía trên "Miền ứng dụng" sao chép cùng một URL

5.) Ở dưới cùng bên phải - nhấp vào "Lưu thay đổi"

6.) Trong menu bên trái bên dưới "Sản phẩm", hãy nhấp vào "Đăng nhập Facebook" (hoặc thêm nó qua "+ Thêm Sản phẩm" nếu nó không có sẵn)

7.) Bạn hiện đang ở trong cài đặt Đăng nhập Facebook. Sao chép cùng một url vào trường "URI chuyển hướng OAuth hợp lệ"

Điều này sẽ hoạt động.


2
Lưu ý rằng Facebook không còn cho phép "http" cho hợp lệ OAuth Redirect URI
OmNiOwNeR

5

Chỉ cần thêm localhost làm url canvas hoặc url trang web di động của bạn, điều này sẽ cho phép bạn có cả localhost và herokuapp.com trong cài đặt Miền ứng dụng của mình. Sau đó, khi ứng dụng của bạn đang được sản xuất, chỉ cần xóa ứng dụng đó.


5

Đây là cách làm sai. Bạn phải tạo ứng dụng thử nghiệm bằng tab Thử nghiệm trong cài đặt ứng dụng. Và sau đó, bạn có thể nhập url giai đoạn phát triển của mình (ví dụ: localhost) vào ứng dụng của mình.


1
tôi đã tạo một ứng dụng thử nghiệm nhưng nó không hoạt động. Thêm chi tiết?
Roger Gajraj

Có, tôi tin rằng đây là cách đúng, hãy xem toàn bộ hướng dẫn stackoverflow.com/a/38173031/3625739
georgios

5

Giải pháp sử dụng Firebase

Để làm cho điều này hoạt động localhost, cổng 3000tôi đã làm như sau:

  1. Tạo ứng dụng

Tạo ứng dụng thử nghiệm

  1. Bây giờ Chọn "+ Tạo ứng dụng thử nghiệm" từ mũi tên thả xuống (trên cùng bên trái).

nhập mô tả hình ảnh ở đây

  1. Thêm localhostvào miền ứng dụng

nhập mô tả hình ảnh ở đây

  1. Thêm http://localhost:3000/vào URL trang web bằng cách chọn "+ Thêm nền tảng"

nhập mô tả hình ảnh ở đây

Cho đến thời điểm này, tôi đã làm theo tất cả các câu trả lời trước đó được gửi ở đây, nhưng không có kết quả.

Vì thế...

  1. Trong menu bên trái, chọn "Thêm sản phẩm"

  2. Thêm "Đăng nhập Facebook"

Bạn sẽ thấy một băng chuyền quy trình làm việc, với miền được mặc định http://localhost:3000/, hãy nhấp vào "tiếp tục" cho đến khi kết thúc.

  1. Chọn "Đăng nhập Facebook> Cài đặt" từ Menu Sản phẩm.

  2. Nhập URI chuyển hướng Firebase OAuth của bạn (tìm thấy khi bật Đăng nhập Facebook trong bảng điều khiển firebase https://console.firebase.google.com , ví dụ bên dưới)

nhập mô tả hình ảnh ở đây

  1. Dán URI và Lưu.

nhập mô tả hình ảnh ở đây

Làm xong.


2

Hãy thử sử dụng url có cổng, ví dụ:

    http://localhost:8000/

Tôi đang gặp vấn đề tương tự và đã tìm thấy giải pháp này ngay bây giờ.


1
Bạn cần phải thêm 'App trên Facebook' như là nền tảng, và thêm localhost: 8000 vào Canvas URL
Tachun Lin

1

Điều này hoạt động đối với tôi trong heroku, điều này không hoạt động (đối với tôi). Tôi hy vọng nó sẽ giúp

1.) Ở giữa dưới hộp tùy chọn đầu tiên, hãy nhấp vào "+ Thêm nền tảng" và chọn "Trang web" (hoặc bất kỳ thứ gì phù hợp với ứng dụng của bạn.)

2.) Trong hộp xuất hiện cho trang web bạn vừa thêm: URL trang web: http://MYAPP.herokuapp.com/ (thay MYAPP bằng tên ứng dụng của bạn)

3.) Trong hộp phía trên (Cài đặt => Cơ bản): Miền ứng dụng: MYAPP.herokuapp.com (thay MYAPP bằng tên ứng dụng của bạn)

4.) Ở dưới cùng bên phải - nhấp vào "Lưu thay đổi"


1

Chỉ là một lưu ý cho một số người khác có thể đang gặp khó khăn với điều này như tôi. Tôi không thể làm cho điều này hoạt động với các ứng dụng "thử nghiệm". Sử dụng cài đặt ứng dụng thực tế của tôi (và chỉ cần thêm

"http://localhost:3000/"

đến URL canvas của tôi) đã hoạt động như mọi người khác đề xuất. Có vẻ như các ứng dụng thử nghiệm không bằng các ứng dụng thực tế.


1

Tôi đã gặp sự cố với ứng dụng Rails mà tôi thường chạy với http: // localhost: 3000 vì Facebook hiện yêu cầu chuyển hướng OAuth hợp lệ để sử dụng https.

Để sử dụng https cục bộ, tôi đã sử dụng [ngrok] [1] cho phép bạn sử dụng https bằng cách cung cấp một đường hầm. Để làm điều này:

  1. Tôi đã vào trang web của họ và tải xuống chương trình của họ
  2. Tôi đã giải nén tệp cho chương trình
  3. Trong bảng điều khiển của mình, tôi đã vào thư mục nơi ngrok được giải nén và nhập 'grok http 3000' trên máy Windows của mình, những người khác có thể sử dụng './grok http 3000'
  4. Sau khi nhập địa chỉ đó, ngrok đã cung cấp địa chỉ https mà tôi đã đặt vào trường URI chuyển hướng OAuth hợp lệ trong Facebook
  5. Sau đó, tôi khởi động máy chủ của mình và có thể truy cập nó bằng địa chỉ https đó thay vì localhost: 3000

1

để thực hiện kiểm tra cục bộ, tất cả những gì bạn phải làm là tắt ứng dụng hoặc đặt ứng dụng facebook ở chế độ phát triển. Sau đó, Facebook sẽ cho phép một mình bạn truy cập ứng dụng


0

Đối với tôi, nó hoạt động như thế này:

Định cấu hình bảng điều khiển ứng dụng facebook:

* Trên tab 'cơ bản':

1) Để trống miền ứng dụng.

2) Xóa bất kỳ nền tảng nào. Có nghĩa là: không có trang web không có nền tảng canvas. (vì vậy không có trường URL trang web để điền)

* Trên tab 'nâng cao':

3) Tôi đã nhập URI chuyển hướng OAuth hợp lệ:

http://localhost/myappfolder/redirect.php

4) liên quan đến mã của tôi, hãy nhập c: /xampp/htdocs/localhost/myappfolder/index.php (tệp này tạo đăng nhậpURL):

$helper = new FacebookRedirectLoginHelper('http://localhost/myappfolder/redirect.php');  

bên trong tệp redirect.php:

$helper = new FacebookRedirectLoginHelper('http://localhost/myappfolder/redirect.php');  

và tôi có một phiên! cuối cùng! cuối cùng không cần phải treo cổ: P

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.