2011-12-07 15 views
8

Tôi đã hoàn thành ứng dụng của mình rồi thử trên 3 tài khoản FB và nó là ok, nhưng 4 th có lỗi vĩnh viễn (không thể có mã thông báo truy cập):Lỗi FB: Dự kiến ​​1 '.' ở đầu vào giữa bưu thiếp và tải trọng

com.restfb.exception.FacebookOAuthException: Received Facebook error response of type OAuthException: Expected 1 '.' In the input between the postcard and the payload.

Tôi đã cố gắng xóa ứng dụng và cài đặt lại ứng dụng trên tài khoản này một vài lần và không có gì thay đổi.

Tôi sử dụng Java và máy khách restFB.

Đây là mã nơi tôi có mã thông báo truy cập:

if (request.getParameter("code") != null) { 
    String code = request.getParameter("code"); 
    String url = "https://graph.facebook.com/oauth/access_token?" 
     + "client_id=" + clientId + "&" + "client_secret=" 
     + clientSecret + "&" + "code=" + code + "&" + "redirect_uri=" 
     + redirectURL +"&type=web_server"; 
    String accessToken=readUrl(url).split("&")[0].replaceFirst("access_token=", ""); 
    //.... 
} 

tôi thấy here một ai đó với lỗi tương tự, ông nói rằng giải pháp là:

replacing "|" with "%257C" which made my access token invalid"

tôi không thể thực sự hiểu ý anh ta là gì.

Trả lời

1

Có thể đáng ghi nhật ký phản hồi với yêu cầu /oauth/access_token và giá trị bạn trích xuất để sử dụng làm mã thông báo truy cập.

Đối với tài khoản không hoạt động, hãy kiểm tra xem phản hồi /oauth/access_token có bao gồm các thông số khác trước access_token hay không. phản ứng IIRC Tôi đã nhìn thấy như

expiry=86400&access_token=AAAxxxx 
0

tôi kinh nghiệm cùng một vấn đề, và sau khi gỡ lỗi kết luận duy nhất của tôi là khi thông điệp này được ném nó chỉ có thể là dấu hiệu hết hạn hoặc không hợp lệ. Việc kiểm tra bằng mã thông báo mới tạo không được ném lỗi này.

1

Kiểm tra để đảm bảo bạn đang xác minh thông số "mã" được trả lại bởi Facebook trước khi ký yêu cầu chứ không phải "mã thông báo truy cập". Đó là sai lầm của tôi.