2011-12-09 35 views
41

tôi cố gắng gửi giá trị phạm vi sereval để cho phép ứng dụng của tôi đối với một số dịch vụ google ...Nhiều Phạm vi giá trị để OAuth2

Tôi đã thử với hai lĩnh vực đầu vào

<input type="hidden" name="scope" value="https://www.googleapis.com/auth/calendar" /> 
<input type="hidden" name="scope" value="https://www.googleapis.com/auth/userinfo.email" /> 

và với một lĩnh vực đầu vào với + dấu phân tách

<input type="hidden" name="scope" value="https://www.googleapis.com/auth/calendar+https://www.googleapis.com/auth/userinfo.email" /> 

Khi tôi gửi biểu mẫu của tôi chỉ với một phạm vi. khác với giá trị phạm vi sereval google redirect tôi với mô tả lỗi này:

http://localhost:49972/redirect.aspx#error=invalid_request&error_description=OAuth+2+parameters+can+only+have+a+single+value:+scope&error_uri=http://code.google.com/apis/accounts/docs/OAuth2.html 

Trong google getting started với OAuth2 nó hoạt động với hai giá trị phạm vi.

Đây là mã của tôi:

<form id="form1" method="post" action="https://accounts.google.com/o/oauth2/auth?" > 
    <div> 
     <input type="hidden" name="response_type" value="code" /> 
     <input type="hidden" name="client_id" value="my client id" /> 
     <input type="hidden" name="redirect_uri" value="http://localhost:49972/redirect.aspx" /> 
     <input type="hidden" name="scope" value="https://www.googleapis.com/auth/calendar" /> 
     <input type="hidden" name="scope" value="https://www.googleapis.com/auth/userinfo.email" /> 

     <input type="hidden" name="state" value="/profile" /> 
     <input type="submit" value="go" /> 
    </div> 
    </form> 

Trả lời

85

Bạn đã đi đúng hướng khi bạn kết hợp chúng vào một trường duy nhất . Chỉ có một tham số phạm vi trong yêu cầu, với các giá trị được phân tách bằng dấu cách. Nếu bạn đang đặt nó trong một hình thức như vậy, trình duyệt sẽ chăm sóc mã hóa không gian cho bạn.

<input type="hidden" name="scope" value="https://www.googleapis.com/auth/calendar https://www.googleapis.com/auth/userinfo.email" /> 
+0

Tôi không có mã của mình cho đến khi tomorow nhưng cảm ơn bạn evan nếu có vẻ lạ –

+2

hiện đang trong năm 2017 bạn nên sử dụng 'value =" https://www.googleapis.com/auth/calendar email "' – user3479125

+3

Đối với tò mò, [RFC 6749, Phần 3.3] (https://tools.ietf.org/html/rfc6749#section-3.3) xác định tham số 'scope' là' Giá trị của tham số phạm vi được biểu diễn dưới dạng danh sách các chuỗi phân biệt chữ hoa chữ thường, phân tách bằng dấu cách'. – davidjb

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