Dropbox iOS SDK: WebKit Discarded an Uncaught Exception

烂漫一生 提交于 2019-12-29 09:33:06

问题


I am using the Dropbox iOS SDK (as of this writing, Cocoapod version 1.3.9). I noticed a strange bug. Here are the steps to reproduce it.

Connect to Dropbox, successfully sign in, and link to my account.

URL logged to the console (tokens masked for security):

db-abcdef123://1/connect?oauth_token=xyz123&oauth_token_secret=lmno123&uid=10884&state=91D8CB70-1037-4A4C-8F7B-CB8970E5E0BC

App linked successfully!

Sign out, then sign in with a different account...

URL logged to the console again, similar to the previous one:

db-abcdef123://1/connect?oauth_token=def123&oauth_token_secret=jkl123&uid=95157647&state=DC716BF2-E033-4586-926C-5E733CEA1E3F

Then comes the error:

*** WebKit discarded an uncaught exception in the webView:decidePolicyForNavigationAction:request:frame:decisionListener: delegate: <Unsupported Signature Method> The signature method "(null)" is not currently support by MPOAuthConnection

[WARNING] DropboxSDK: error loading DBConnectController - Error Domain=NSURLErrorDomain Code=-1002 "unsupported URL" UserInfo=0x12848f00 {NSErrorFailingURLStringKey=db-abcdef123://1/connect?oauth_token=123abc&oauth_token_secret=xyz123&uid=95157647&state=DC716BF2-E033-4586-926C-5E733CEA1E3F, NSErrorFailingURLKey=db-abcdef123://1/connect?oauth_token=123abc&oauth_token_secret=xyz123&uid=95157647&state=DC716BF2-E033-4586-926C-5E733CEA1E3F, NSLocalizedDescription=unsupported URL, NSUnderlyingError=0x144c4c80 "unsupported URL"}

The Dropbox login screen remains in the webView, and clicking Sign in again causes the same error but then makes the app crash.

Any ideas?


I'm using Xcode 5 and iOS 7


回答1:


This is a known issue which will be fixed in the next release of the iOS Dropbox app (not the SDK).

EDIT: I misdiagnosed this based on the error message. The actual issue is likely that once you've initialized a DBRestClient, it continues to try to use the same user ID for authentication throughout its lifespan. If you unlink that user (even if you've added another user instead), it will fail to authenticate API calls because it no longer has credentials for that user.

The fix is to create a new DBRestClient when you switch to a new user.

This issue is present in the DBRoulette sample app. We're going to try to put in a fix for the next SDK release.



来源:https://stackoverflow.com/questions/21126030/dropbox-ios-sdk-webkit-discarded-an-uncaught-exception

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!