2013-01-11 13 views
7

Mặc dù mã sau hoạt động chính xác bằng Chrome (hiển thị cửa sổ bật lên yêu cầu quyền của người dùng cho phép truy cập vào dữ liệu bản đồ và địa điểm), IE 9 mở biểu mẫu bật lên, nhưng trống; khi gọi phương thức handleAuthClick. Tôi đã thử thêm setTimeouts nhưng không có hiệu lực. Tôi đảm bảo cửa sổ bật lên được cho phép và kiểm tra các url trang bật lên giống hệt nhau trong Chrome và IE. Có ai gặp phải vấn đề này? Hoặc ai đó có thể cung cấp một công việc xung quanh?Trình khách JavaScript oauth2 của Google không hoạt động trong IE 9

var clientId = '############.apps.googleusercontent.com'; 
var apiKey = '#A#A#A#A##'; 
var scopes = 'https://www.googleapis.com/auth/plus.me'; 

function handleClientLoad() { 
    gapi.client.setApiKey(apiKey); 
    window.setTimeout(checkAuth, 1); 
} 

function checkAuth() { 
    gapi.auth.authorize({ client_id: clientId, scope: scopes, immediate: true }, handleAuthResult); 
} 

function handleAuthResult(authResult) { 
    if (authResult && !authResult.error) { 
     makeApiCall(); 
    } else { 
    } 
} 

function handleAuthClick(event) { 
    try { 
     window.setTimeout(function() { 
      gapi.auth.authorize({ client_id: clientId, scope: scopes, immediate: false }, handleAuthResult); 
     }, 10); 
    } catch (e) { alert(e.message); } 
} 
function makeApiCall() { 
    gapi.client.load('plus', 'v1', function() { 
     var request = gapi.client.plus.people.get({ 
      'userId': 'me' 
     }); 
     request.execute(function (resp) { 
      $(".google-signin").find("img").attr('src', resp.image.url).css('height', '32').css('width', '32'); 
      $("#login-msg").text('Welcome: ' + resp.displayName); 
      $("img.vote").css('visibility', 'visible'); 

     }); 
    }); 
} 

Trả lời

1

Điều cuối cùng giải quyết vấn đề này là tăng thời lượng setTimeout lên 1000 từ 10. Cửa sổ bật lên ủy quyền của Google được hiển thị với thông tin đăng nhập chính xác, thay vì màn hình trống.

+1

Tôi có cùng một vấn đề, nhưng giải pháp này không giúp được gì. Tôi vẫn nhận được cửa sổ bật lên trống thay vì thông tin thực ... – ronen

+0

Cửa sổ bật lên có được bật không? (Thật đáng tiếc là Google chưa cung cấp bất kỳ giải pháp nào). –

+1

có. popup được cho phép trong trình duyệt. Cửa sổ bật lên được hiển thị nhưng có nội dung trống. – ronen

0

Lưu ý rằng các bản đồ/feeds phạm vi bạn đang sử dụng là cho bị phản đối Google Maps API dữ liệu, mà không phải là điều tương tự như Places API

Về câu hỏi thực tế của bạn, tôi gắn thẻ lại để thay thế Địa điểm API với API Plus vì đó là những gì bạn đang sử dụng ở đây.

+0

Tôi đã xóa tất cả phạm vi trừ google +, nhưng IE (8/9) vẫn chưa hợp tác. –

1

Có thể tập lệnh có nguồn gốc chéo giữa ứng dụng web ứng dụng khách và Google bị chặn bởi bảo mật vùng.

Hãy đảm bảo rằng cả hai google.com và trang web chứa các kịch bản đang chạy rơi vào khu vực an ninh tương tự (Internet Zone, thường). Nếu bạn không chắc chắn, xem serverfault # 612903 https://serverfault.com/questions/612903/ie11-how-to-check-into-which-zone-a-url-falls

Cũng đảm bảo rằng vùng mà ứng dụng web và Google được phân loại được định cấu hình để cho phép thực thi tập lệnh và đảm bảo quyền truy cập cookie của bên thứ ba được phép cho google.com vì điều này được sử dụng để kiểm tra ủy quyền.

+1

Cảm ơn bạn đã phản hồi toàn diện - +1. Hóa ra là Google đã hủy bỏ tính năng yêu cầu OAuth, vì vậy vấn đề này bị tắt tiếng, –