2013-09-08 32 views
33

Kể từ khi thay đổi mới nhất trên Facebook, liên quan đến appsecret_proof: https://developers.facebook.com/docs/reference/api/securing-graph-api/, chúng tôi vẫn không thể tải xuống báo cáo hiệu suất ngay cả sau khi bật/tắt tính năng từ Cài đặt nâng cao trong ứng dụng của chúng tôi, hoặc áp dụng mã như được mô tả trong tài liệu của họ.Tại sao tôi nhận được "Ứng dụng không hợp lệ được cung cấp trong đối số API"

Chúng tôi không ngừng nhận được lỗi này:

{"error":{"message":"Invalid appsecret_proof provided in the API argument","type":"GraphMethodException","code":100}}

và tôi đã mở một lỗi bảo mật nhưng không ai trả cho tôi với một câu trả lời.

Tôi thực sự không biết chúng ta có thể thử thêm những gì nữa?

Trả lời

35

Lỗi là (dựa trên kinh nghiệm của tôi) gần như chắc chắn chính xác; nó có nghĩa là bạn đang chứng minh một appsecret_proof không hợp lệ với cuộc gọi API của bạn

Giả sử bạn đang sử dụng các tiêu chuẩn PHP SDK mà không sửa đổi, lý do có thể nhất cho điều này là:

  • Bạn cấu hình ID ứng dụng sai trong mã SDK
  • Bạn đã cấu hình bí mật ứng dụng sai trong các mã SDK
  • Bạn đang cố gắng sử dụng một thẻ truy cập từ sai/app khác
+0

hi Igy, cảm ơn phản hồi của bạn, chúng tôi sẽ kiểm tra điều này sớm nhất có thể, nhưng cũng - đây là cách chúng tôi tạo ứng dụng, bạn có thể xem liệu nó có chính xác không? 'code'string appSecret = Instance.Configuration.Options [FacebookConfigurationOptions.AppSecret]; var secretByte = Encoding.UTF8.GetBytes (appSecret); var hmacsha256 = new HMACSHA256 (secretByte); var tokenBytes = Encoding.UTF8.GetBytes (_accessToken); hmacsha256.ComputeHash (tokenBytes); trả về ByteToString (hmacsha256.Hash); 'code' – user1508682

9

có một lỗi trong Facebook SDK. Sau 20 tiếng đồng hồ cố gắng mọi thứ để gỡ lỗi mã của riêng tôi (! Mà không có vấn đề), tôi nhận xét này ra trong base_facebook.php:

/* Commented out by SJ 
    if (isset($params['access_token'])) { 
     $params['appsecret_proof'] = $this->getAppSecretProof($params['access_token']); 
    } 
*/ 

Và tất cả những vấn đề đi xa!

+6

Bạn có thể đang sử dụng một id ứng dụng khác cho các phần của mã mà bạn tạo mã thông báo và khi bạn sử dụng nó. – Mike

+2

@Mike Đó là vấn đề trong trường hợp của tôi. Cảm ơn – P5Coder

+1

Xin lưu ý rằng nếu bạn đang sử dụng Mã thông báo truy cập trang Facebook, bạn nên tạo phiên mới từ mã thông báo truy cập trang đó làm đối số. Điều này sẽ được trả về chức năng của bạn: trả về FacebookSession mới ($ access_token); –

1

Lỗi này là kết quả của việc đặt mã thông báo truy cập không chính xác. Ví dụ: đăng bài lên album trang bằng mã thông báo truy cập của người dùng (quản trị viên). Tôi đã giải quyết lỗi này hầu như tất cả các lần bằng cách đặt mã thông báo truy cập thích hợp

7

Không có lỗi trong phiên bản mới nhất của facebook PHP SDK. Bạn cần phải tạo appsecret_proof theo các tài liệu:

$appsecret_proof= hash_hmac('sha256', $access_token, $app_secret); 

sau đó vượt qua nó như một tham số để gọi api của bạn.

Xem các tài liệu ở đây: https://developers.facebook.com/docs/graph-api/securing-requests/

Một khi tôi đã làm tất cả điều này là tốt và tôi không phải hack base_facebook.php

+2

Băm đã được thực hiện trong base_facebook.php trên dòng 919 tại sao lại làm điều đó? – astroanu

+0

Bạn không cần phải làm bất cứ điều gì về nó khi sử dụng SDK chính thức.Miễn là bí mật ứng dụng của bạn là chính xác – cwhsu

+0

Đây là một câu trả lời hay, nhưng bạn có thể vào cài đặt nâng cao cho ứng dụng của mình và tắt 'yêu cầu bí mật ứng dụng', tất nhiên bạn sẽ mất thêm tính bảo mật. – Ecropolis

0

Nếu lỗi này là hành vi bất ngờ, bạn có thể đã kiểm tra một thiết lập trong ứng dụng của bạn yêu cầu nó. Bỏ chọn nó và bạn sẽ ngừng nhận được lỗi đó. Cài đặt đó đang ở trong cài đặt -> nâng cao và được gọi là "Bằng chứng bí mật ứng dụng cho cuộc gọi API máy chủ". Đặt nó thành NO.

Đến bây giờ, cài đặt đó là trên trang này (hãy chắc chắn để đưa AppID của bạn trong URL): https://developers.facebook.com/apps/YOUR-APP-ID/settings/advanced/

Lưu ý đây không phải là một giải pháp phổ biến, chỉ có một giải pháp cho những người không muốn điều đó hành vi.

+0

Tôi không có cài đặt như vậy trong Nâng cao. Trận đấu gần nhất là "Yêu cầu ứng dụng bí mật". – Andor

0

đảm bảo thiết lập của bạn đúng fbappid + fbappsecret

lỗi này xảy ra khi những người không được thiết lập đúng

như bạn có 2 ứng dụng một phát triển và sản xuất một

và bạn mess lên mã, hãy kiểm tra hai người đó

0

Chỉ dành cho những người có cùng một vấn đề;

Khi bạn thiết lập Khách hàng OAuth Đăng nhập để "có" trên facebook, bạn nên cung cấp cho phù hợp OAuth trị chuyển hướng URI. Nếu không, facebook sẽ ném chính xác lỗi tương tự.

12

Một nguyên nhân tiềm năng khác của lỗi "Ứng dụng không hợp lệ_điện thoại ...", là mã thông báo truy cập của người dùng không được liên kết với ứng dụng. Nếu bạn đang tạo mã thông báo truy cập người dùng bằng trình khám phá biểu đồ, hãy đảm bảo chọn ứng dụng từ trình đơn thả xuống ở góc trên cùng bên phải. Nếu không, bạn sẽ tạo mã thông báo chỉ hoạt động trong trình khám phá API biểu đồ.

I filed a bug với SDK Python trước khi tôi bắt gặp lỗi của mình. GUI là ma quỷ.

0

Trong trường hợp của tôi, tôi cần thiết để thiết lập mặc định access token qua phương pháp: setDefaultAccessToken()

Tôi đã sử dụng thẻ được tạo ra trong công cụ dev GraphApi nhưng tôi đã không chuyển sang ứng dụng thích hợp. Nó đã được giải quyết bằng cách thay đổi ứng dụng thành một trong những thích hợp và sử dụng mã thông báo tái sinh.

1

Đây là lỗi do mã thông báo chính xác. Có thể là do bạn đang sử dụng tài khoản khác để định cấu hình ứng dụng web và ứng dụng dành cho thiết bị di động cho cấu hình Facebook. Cả hai tài khoản phải giống nhau.

ID ứng dụng phải giống với ứng dụng dành cho thiết bị di động và ứng dụng web của bạn.

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