2012-10-10 52 views
1

我試圖從應用中心爲移動設備做認證,但是當我試圖訪問令牌交換碼參數我得到這個錯誤:OAuthException錯誤

{ 
    "error": { 
     "message": "Error validating verification code. Please make sure your redirect_uri is identical to the one you used in the OAuth dialog request", 
     "type": "OAuthException", 
     "code": 100 
    } 
} 

驗證令牌參數採用查詢字符串格式,因爲我的應用使用服務器端身份驗證

我打電話的URL爲https://graph.facebook.com/oauth/access_token,我發送到REDIRECT_URI參數是類似以下:

http://www.example.com?ref=app_directory&code=codefromfb&fb_source=appcenter_mobile&fb_appcenter=1

www.example.com是我」的值已在應用設置中的移動網站網址字段中設置。

從應用程序中心的web身份驗證沒關係。

我不明白這是錯誤的重定向URI形式的移動設備......

你能幫助我嗎?

回答

1

我有同樣的錯誤。我無法解決它,但發現了一個解決方法: 我忽略了由Facebook自動發送到我的移動網絡應用程序的代碼參數;相反,我自己提出了一個代碼請求,然後使用我用來請求代碼的相同redirect_uri來交換code_access_token。

爲了更方便地應用變通方法,在您的應用程序>設置>權限中,您可以將Auth令牌參數從查詢字符串更改爲URI片段。然後Facebook不會自動發送你的代碼參數 - 你將不得不提出請求 - 這就是需要的。

解決此問題的另一種方法是在客戶端使用URI片段或解析URI片段來實現客戶端認證流程,並將access_token作爲參數發送給服務器。我還沒有測試這種方法。

1

重定向的URL

desktop: http://www.example.com/?fb_source=appcenter&fb_appcenter=1 
mobile: http://www.example.com/?ref=app_directory 
      (part fb_source=appcenter_mobile&fb_appcenter=1 should be excluded for mobile, I think that it's FB bug) 

其中:

http/https  - depends on request 
www.example.com - you should use exactly same string as saved at application settings (https://developers.facebook.com/apps/YOUR_APPLICATION_NUMBER/summary) Domain name is case sensitive for Facebook (also bug) 
相關問題