2016-01-22 23 views
5

Tôi đang cố triển khai Đăng nhập bằng Google cho ứng dụng phía máy chủ như được hiển thị trong tài liệu của Google: Google Sign-In for server-side apps, nhưng cửa sổ đồng ý không bao giờ yêu cầu quyền truy cập ngoại tuyến. Sau khi chọn người dùng, nó chỉ đóng và gọi hàm xử lý đăng nhập.api đăng nhập javascript của Google: không có truy cập ngoại tuyến

Kết quả là khi tôi nhận được mã một lần và gửi mã đó đến máy chủ, tôi không thể đổi mã cho mã thông báo làm mới, chỉ cho mã thông báo truy cập và id.

Đây là mã của tôi khách hàng:

Trong tập tin HTML: đang

<script src="https://apis.google.com/js/platform.js?onload=init" async defer></script> 

Javascript:

var auth2; 
function init() { 
    gapi.load('auth2', function() { 
     auth2 = gapi.auth2.init({ 
      client_id: '<my client id>.apps.googleusercontent.com', 
      scope: 'https://www.google.com/m8/feeds https://www.googleapis.com/auth/drive https://www.googleapis.com/auth/drive.appfolder' 
     }); 
    }); 
    $('#signinButton').click(function() { 
     auth2.grantOfflineAccess({'redirect_uri': 'postmessage'}).then(onSignIn); 
    }); 
} 

function onSignIn(authResult) { 
    if (authResult['code']) { 
    // Send the code to the server 
    } 
} 

Dự án trong Google console chứa một chứng chỉ client web với nguồn gốc javascript có liên quan và không có URI chuyển hướng được ủy quyền.

Tôi nên làm gì để buộc cửa sổ đồng ý yêu cầu truy cập ngoại tuyến?

Trả lời

7

Tôi có thể buộc lời nhắc ngoại tuyến, bằng cách thêm tham số 'approval_prompt' : 'force' đến auth2.grantOfflineAccess chức năng.

Ví dụ:

auth2.grantOfflineAccess({'redirect_uri' : 'postmessage', 'approval_prompt' : 'force'}).then(onSignIn);

+0

Cảm ơn bạn Mael! Nó thực sự yêu cầu truy cập ngoại tuyến mỗi lần và tôi có mã thông báo làm mới. – burgi

+0

Vui mừng khi thấy nó hoạt động @burgi! Btw, bạn có thể cấp auth gia tăng với đăng nhập phía máy chủ không? Tôi bị kẹt trong vấn đề này: http://stackoverflow.com/questions/35023983/incremental-combined-authorization-with-google-signin-for-server-side-apps và mọi phạm vi mới tôi yêu cầu người dùng ủy quyền, mã thông báo kết quả ghi đè các phạm vi được ủy quyền trước đó ... – Mael

+0

Xin lỗi @Mael, tôi không sử dụng auth gia tăng. Logic nghiệp vụ của tôi yêu cầu nhận tất cả các quyền trong nâng cao. – burgi

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