2013-11-24 20 views
6

Cố gắng để API Google Drive hoạt động trong nút-webkit.Node-webkit và google drive api

Khi tin nhắn auth được gửi đi, nó được gửi đi kèm với Origin of File: // bị từ chối.

https://accounts.google.com/o/oauth2/auth 
?client_id=<some value> 
&scope=https://www.googleapis.com/auth/drive.appdata 
https://www.googleapis.com/auth/drive.file 
https://www.googleapis.com/auth/drive 
&immediate=true 
&proxy=oauth2relay1232990068 
&redirect_uri=postmessage 
&origin=file:// 
&response_type=token 
&state=1938150804|0.1319366391 
&authuser=0 

Không chắc chắn lý do tại sao nó được gửi theo cách đó từ gapi - bất kỳ ai biết cách xác thực ổ đĩa google từ nút-webkit?

+0

tôi đoán là GAPI không được viết bằng nút như một trường hợp sử dụng. Đề nghị ngắn của tôi là không sử dụng nó. Bạn biết URL cần phải trông như thế nào, vì vậy, chỉ cần gọi trực tiếp và phân tích cú pháp phản hồi JSON. – pinoyyid

+0

Tôi lấy lời khuyên của bạn - thật dễ dàng để triển khai giải pháp máy tính để bàn REST. – ed4becky

Trả lời

4

Tôi đã chọn bỏ qua API cho oAuth và tự làm điều đó.

Người dùng phải sao chép mã xác thực và dán mã đó vào ứng dụng của tôi - không phải lựa chọn đầu tiên, nhưng họ chỉ phải thực hiện một lần và ưu tiên thay thế (thiếu).

Chia sẻ mã cho những người quan tâm:

Khi người dùng chọn Google lái xe:

  window.open('https://accounts.google.com/o/oauth2/auth?' 
        + 'client_id=<some value>' 
        + '&scope=<space delimited list of permissions>' 
        + '&redirect_uri=urn:ietf:wg:oauth:2.0:oob' 
        + '&response_type=code'); 

Điều này tạo ra một popup cho phép của họ cho phép và trình bày chúng auth mã.

Khi auth mã được dán vào ứng dụng của tôi, tôi lưu nó vào DB và điền đầy đủ nhận được một mã số truy cập, mà tôi sau đó lưu vào DB:

  $.ajax({ 
       url: "https://accounts.google.com/o/oauth2/token", 
       type: 'post', 
       data: { 
        code: <authCode>, 
        client_id: CLIENT_ID, 
        client_secret: CLIENT_SECRET, 
        redirect_uri: 'urn:ietf:wg:oauth:2.0:oob', 
        grant_type: 'authorization_code' 
       } 
      }).error(function(data) { 
       myObj.isAuth = false; 
       if (cbFail) { 
        cbFail(data); 
       } 
      }).success(function(data) { 
       myObj.isAuth = true; 
       <persist entire response> 
       if (cbSuccess) { 
        cbSuccess(); 
       } 
      }); 
Các vấn đề liên quan