问题
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