2010-08-19 26 views
13

Tôi đang cố gắng sử dụng FBGraph để cho phép ứng dụng của tôi xuất bản thư trên tường của người dùng. Tuy nhiên, tất cả các API đều là ngoại lệ đối với tôi và tôi chỉ đang cố thay đổi mọi thứ và xem điều gì xảy ra. Ngay bây giờ, tôi nhận được thông báo lỗi nàyfacebook API OpenGraph trên Đường ray (FBGraph)

{ 
    "error": { 
     "type": "OAuthException", 
     "message": "Invalid redirect_uri: Given URL is not allowed by the Application configuration." 
    } 
} 

Có ai biết điều đó có nghĩa là gì bởi redirect_uri? Điều gì sẽ xảy ra trên trang Cài đặt ứng dụng của tôi trên facebook?

+0

Nếu bạn cung cấp một số mã nó sẽ dễ dàng hơn để trả lời. – serg

Trả lời

13

Tôi không phải là chuyên gia về facebook, nhưng tôi đã gặp phải vấn đề tương tự như bạn vài giờ trước khi tôi cố gắng đăng nhập người dùng bên trong ứng dụng web với Facebook.

Dường như redirect_uri mà bạn chỉ định trong cuộc gọi đến "https://graph.facebook.com/oauth/authorize" phải nằm trên cùng một miền với Url kết nối của ứng dụng của bạn. (Bạn có thể thiết lập rằng url kết nối từ phần Connect trong cài đặt ứng dụng của bạn)

Kính trọng, Florin

+0

Nếu chúng hạn chế gọi lại, tại sao chúng không cho phép nhiều url kết nối !? Tôi ước họ sẽ biến nó thành một danh sách có thể quản lý thay vì một hộp văn bản một lần. – Kieveli

20

Florin là đúng. Chỉ cần một lưu ý ở đây .. khi kiểm tra tại địa phương bạn sẽ cần phải đặt nó là:

http://localhost:3000/ (hoặc bất kỳ cổng máy chủ ứng dụng của bạn)

Sau đó, khi bạn di chuyển nó đến sản xuất, đặt nó vào URL thường xuyên của bạn:

http://yourdomain.com/

tôi có một ứng dụng facebook riêng biệt mà tôi sử dụng trong phát triển để kiểm tra, vì vậy tôi không cần phải thay đổi qua lại giữa họ và tôi thiết lập các phím trong một tập tin cài đặt, trong đó có tôi mã thông báo cho các ứng dụng phát triển và sản xuất.

Dù sao, có vẻ như bạn sắp hoàn tất. Nó làm cho nó trở lại url gọi lại ít nhất. Nên ổn khi bạn cập nhật URL facebook_connect

+1

Tôi tưởng tượng ra giải pháp này, và cũng tưởng tượng tôi bằng cách nào đó để lại chìa khóa dev trong một triển khai sản xuất. – Kieveli

+0

Sử dụng plugin cho các biến ứng dụng rộng trên mỗi môi trường. Hãy thử plugin của tôi -> https://github.com/cowboycoded/yettings Điều này sẽ cho phép bạn sử dụng một tệp YAML tương tự như database.yml của bạn và nó sẽ chọn đúng khóa/giá trị tùy thuộc vào môi trường bạn khởi động máy chủ. – johnmcaliley

+6

Bạn không cần hai cấu hình. Nếu bạn thiết lập tên miền trang web của bạn để yourdomain.com Facebook cũng sẽ cho phép xác thực cho bất kỳ tên miền phụ. Trong tệp host cục bộ của bạn, bạn có thể thêm một mục bản đồ 127.0.0.1 vào localhost.yourdomain.com. Sau đó, trong trình duyệt của bạn, bạn sử dụng http://localhost.yourdomain.com:{port}/ và mọi thứ sẽ hoạt động tốt. –

0

Chỉ cần xác minh 'ID ứng dụng' của bạn. Trong trường hợp của tôi, tôi đã có vấn đề đó bởi vì tôi đã sử dụng ID từ dự án khác của tôi mà tôi đang làm việc. Khá rõ ràng nhưng tôi đã mất một thời gian.

0

tôi phải chắc chắn rằng tôi có phạm vi trong đó quá:

config.omniauth :facebook, 'xxxx', 'xxx', :scope => 'offline_access,email,publish_stream' 

Thêm vào đó bạn thực sự cần phải chắc chắn rằng bạn chờ đợi một vài phút vì nó không mất thời gian để tuyên truyền ..

1

Có thể cần phải kiểm tra Cài đặt của bạn> Cơ bản> Thông tin cơ bản> Miền ứng dụng. Tôi tin rằng mũ cần phải được đặt chính xác cho redirect_uri là tốt.

1

Tôi gặp vấn đề tương tự.

Trong trường hợp của tôi, tôi đã định cấu hình url trang web trên facebook là: "http: // localhost: 3000", đó là một URL không đúng với facebook.

Lý do là, nó thiếu sự/ở cuối url, vì vậy url trang web chính xác nên là: "http: // localhost: 3000 /"

Các vấn đề liên quan