2013-10-23 25 views
12

Tác vụ tôi đang làm bây giờ là thiết lập ủy quyền google để truy cập tài nguyên của tổ chức của tôi.Google Cloud Console: URI chuyển hướng không hợp lệ

Nhưng có vấn đề với nhiệm vụ này. Tổ chức của tôi sử dụng miền không chuẩn cho mạng cục bộ của nó: domain.off. Và khi tôi cố gắng đặt 'http://dev.domain.off:12345/auth/google/callback.html' làm gọi lại oauth2 trong Google Cloud Console (https://cloud.google.com/console), tôi nhận được lỗi 'URI chuyển hướng không hợp lệ'.

Tôi không thể sử dụng địa chỉ trực tiếp với miền internet chính xác vì có nhiều dịch vụ khác trong miền phát triển riêng của tổ chức của tôi tôi phải sử dụng xung đột đó với các địa chỉ khác nhau.

Tôi không thể sử dụng môi trường sản xuất có địa chỉ trực tiếp cho mục đích phát triển. Môi trường phát triển chỉ có địa chỉ riêng, domain.off.

Tôi không thể sửa đổi môi trường phát triển lỗ để thay đổi tất cả địa chỉ dev riêng thành công khai. Đây là một nhiệm vụ không phải của tôi.

Có giải pháp nào cho vấn đề của tôi không? Giải pháp duy nhất tôi thấy bây giờ là yêu cầu nhà phát triển Google xóa hoặc sửa đổi trình xác thực URI trong biểu mẫu cài đặt gọi lại oauth để chấp nhận các miền không chuẩn.

+0

Tôi không biết gì về google cloud. Chỉ là ý tưởng. Có lẽ bạn có thể sử dụng một url hợp lệ và sau đó sử dụng apache với các chỉ thị proxy như proxypass và proxypassreverse để xử lý yêu cầu. –

+0

Đây có phải là trợ giúp 2 u: https://groups.google.com/forum/#!topic/google-plus-developers/6j6JNmewCXI –

Trả lời

1

kể từ khi bạn không thể sử dụng địa chỉ trực tiếp với miền chính xác internet

bạn có thể thử một cái gì đó như thế này

Bạn có thể tạo một subdomain tổng thể để có được tất cả các câu trả lời google auth và chuyển hướng để sửa subdomain bằng cách sử dụng "nhà nước" tham số truy vấn.

Ví dụ: tạo google.mydomain.com và sử dụng nó làm "URI chuyển hướng" hợp lệ của bạn và Apache sẽ chuyển hướng url này đến từng người dùng có tính năng chuyển hướng (hoặc viết lại).

Thông tin thêm về apache chuyển hướng trong http://www.simonecarletti.com/blog/2009/01/apache-query-string-redirects/

Đây mã:

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^google\. 
RewriteCond %{QUERY_STRING} state=([a-z0-9]+) 
RewriteRule ^(.*)$ http://%1.mydomain.com/$1 [L] 
1

Có thể rằng bạn làm được sự đồng ý và chuyển hướng tới một phạm vi công cộng ở đâu đó bạn kiểm soát tốt (sử dụng access_type = ẩn) ?

Khi Google quay lại mã xác thực, không sử dụng mã đó từ miền công cộng, chuyển nó với http webhook hoặc một thứ gì đó đến miền riêng của bạn đang bị ràng buộc, sau đó thực hiện trao đổi từ miền riêng. Điều này sau đó cho phép bạn sử dụng tên miền và gọi lại url khác với bất cứ điều gì bạn muốn. Lưu ý rằng tập hợp redirect_url với tập lệnh sdk cũng phải giống như những gì bạn đã đặt trên bảng điều khiển, độc lập với máy chủ mà bạn thực sự gọi là trao đổi và hoàn thành việc mua lại mã thông báo.

Tôi không chắc chắn nếu tôi thiếu bất kỳ ràng buộc nào của bạn nhưng có lẽ điều này sẽ giúp ích.

3

Điều bạn có thể muốn là sử dụng một trong các luồng công việc Oauth thay thế.

Nếu tất cả những gì bạn muốn là sử dụng đám mây của Google từ dịch vụ của bạn, hãy truy cập tài khoản dịch vụ như được giải thích tại đây: https://developers.google.com/console/help/new/#generatingoauth2 Tôi làm việc này tại teowaki.com để tương tác với google bigquery và hoạt động liên tục. Tất cả những gì bạn cần là tạo một khóa trên bảng điều khiển đám mây và đặt khóa trên máy chủ của bạn.

Nếu bạn cần phải xác định người dùng, sau đó bạn có thể đi cho OAuth cho các ứng dụng được cài đặt như hình đây https://developers.google.com/console/help/new/#generatingoauth2

Trong trường hợp này, bạn có thể chọn beetween người sử dụng đi đến một URL trong đó họ sẽ được trình bày một mã thông báo họ cần phải dán lại vào ứng dụng của bạn hoặc được chuyển hướng đến một URL trong localhost. Vì tôi cho rằng bạn đang làm một ứng dụng web, bạn nên chọn tùy chọn đầu tiên và trình bày cho người dùng mã thông báo họ cần dán. Nó có lẽ không phải là UX tốt nhất từ ​​trước tới nay, nhưng là một ứng dụng nội bộ, nó có lẽ là doable.

+0

Tôi đã trao cho bạn tiền thưởng vì bạn đã cung cấp tùy chọn duy nhất không yêu cầu miền công cộng và đó rõ ràng là vấn đề chính với vấn đề này. Thật không may nó không thực sự giúp công việc phát triển của tôi với bột bởi vì tôi sẽ không muốn một hành vi khác nhau trong dev và trong sản xuất nhưng tôi khá chắc chắn bạn trả lời vấn đề có một máy chủ sản xuất chỉ lan. – systho

+0

Cảm ơn bạn :) Bạn đúng về việc có hành vi khác nhau về dev/production. Tôi nghĩ rằng đây sẽ là một ứng dụng mạng nội bộ vì vậy đó là lý do tại sao tôi cung cấp cho bạn giải pháp đó –

+0

Và bạn đã đúng, tôi chỉ cần thêm một lưu ý abut có cùng một vấn đề với bột nhưng lưu ý đã bị ràng buộc với thông điệp tiền thưởng mà bây giờ đã biến mất – systho

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