2013-03-07 33 views
9

Để tham khảo, đây là dòng chảy Google+ mà tôi đang làm việc với:Google OAuth2 Đăng nhập với AngularJS callback

https://developers.google.com/+/web/signin/server-side-flow

  1. Người dùng nhấp vào nút đăng nhập. Các yêu cầu cấp phép được gửi đến các máy chủ OAuth của Google
  2. thoại
  3. OAuth được kích hoạt cho người dùng
  4. access_token, id_token và mã một lần được trả về
  5. Client gửi id_token và mã đến máy chủ
  6. trao đổi máy chủ một đang -time cho access_token
  7. Google trả access_token
  8. máy chủ nên xác nhận "đăng nhập đầy đủ vào" để khách hàng

Tôi đã có điều này chủ yếu là làm việc, nhưng tôi muốn AngularJS biết khi nào khách hàng được "đăng nhập đầy đủ" ở bước 7.

Lý tưởng nhất, tôi muốn bước 3 được điều khiển bởi Bộ điều khiển AngularJS, nhưng Tôi không chắc liệu điều đó có thể xảy ra hay không.

Nút đăng nhập là ở đây:

https://developers.google.com/+/web/signin/server-side-flow#step_4_add_the_sign-in_button_to_your_page

<!-- Add where you want your sign-in button to render --> 
<div id="signinButton"> 
    <span class="g-signin" 
    data-scope="https://www.googleapis.com/auth/plus.login" 
    data-clientid="YOUR_CLIENT_ID" 
    data-redirecturi="postmessage" 
    data-accesstype="offline" 
    data-cookiepolicy="single_host_origin" 
    data-callback="signInCallback"> 
    </span> 
</div> 
<div id="result"></div> 

Thông số data-callback cho phép tôi để xác định một chức năng, nhưng tôi chỉ có thể lấy nó để làm việc trên các chức năng toàn cầu. Công việc duy nhất tôi có thể nghĩ là để AngularJS liên tục thăm dò ý kiến ​​máy chủ để cập nhật chỉ trong trường hợp người dùng đăng nhập, nhưng tôi tự hỏi liệu có cách nào để thực hiện công việc này trong cấu trúc sự kiện để đó là tất cả ngay lập tức.

Cho dù điều này là có thể hay không, tôi sẽ đánh giá rất cao mọi lời khuyên về cách tôi nên đi về việc này. Hãy cho tôi biết nếu bạn có bất cứ thắc mắc nào. Cảm ơn bạn!

Trả lời

11

Sau một loạt các tìm kiếm, cuối cùng tôi đã tìm thấy những gì tôi cần ở đây:

https://developers.google.com/+/web/signin/#javascript_api

tôi không thể sử dụng các dữ liệu thuộc tính để thực hiện những gì tôi cần. Tôi cần phải hiển thị nút theo cách thủ công bằng cách sử dụng API javascript.

+0

Bạn đã giải quyết nó như thế nào? Tôi đã thử đi qua một chức năng như tham chiếu đến callbalck nhưng không hoạt động. – vintem

+0

@VinTem Chìa khóa cho tôi đã đi qua một chuỗi đại diện cho ID phần tử chứ không phải là phần tử góc (jqlite). – alalonde

+0

Để làm điều này dễ dàng hơn, tôi thấy chỉ thị góc nhỏ đẹp mắt này thực hiện công việc tạo nút google plus, mở cửa sổ và khôi phục mã thông báo truy cập vào cửa sổ orgin mà sau đó bạn có thể gửi tới máy chủ của mình để lấy chi tiết người dùng. https://github.com/sirkitree/angular-directive.g-signin – craigvl

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