hank
2019-01-22 13e53a03f4d50169d0cf7f72d414753ae6b421ce
commit | author | age
bad748 1 // Copyright (c) 2014-present, Facebook, Inc. All rights reserved.
W 2 //
3 // You are hereby granted a non-exclusive, worldwide, royalty-free license to use,
4 // copy, modify, and distribute this software in source code or binary form for use
5 // in connection with the web services and APIs provided by Facebook.
6 //
7 // As with any software that integrates with the Facebook platform, your use of
8 // this software is subject to the Facebook Developer Principles and Policies
9 // [http://developers.facebook.com/policy/]. This copyright notice shall be
10 // included in all copies or substantial portions of the software.
11 //
12 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
13 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
14 // FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
15 // COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
16 // IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
17 // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
18
19 #import <Foundation/Foundation.h>
20
13e53a 21 #if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_10_0
bad748 22
9febd9 23 /**
13e53a 24  The error domain for all errors from FBSDKCoreKit.
9febd9 25
W 26  Error codes from the SDK in the range 0-99 are reserved for this domain.
bad748 27  */
13e53a 28 FOUNDATION_EXPORT NSErrorDomain const FBSDKErrorDomain;
H 29
30 #else
bad748 31
9febd9 32 /**
13e53a 33  The error domain for all errors from FBSDKCoreKit.
H 34
35  Error codes from the SDK in the range 0-99 are reserved for this domain.
bad748 36  */
13e53a 37 FOUNDATION_EXPORT NSString *const FBSDKErrorDomain;
bad748 38
13e53a 39 #endif
bad748 40
13e53a 41 #if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_11_0
bad748 42
W 43 /*
44  @methodgroup error userInfo keys
45  */
46
9febd9 47 /**
13e53a 48  The userInfo key for the invalid collection for errors with FBSDKErrorInvalidArgument.
9febd9 49
W 50  If the invalid argument is a collection, the collection can be found with this key and the individual
bad748 51  invalid item can be found with FBSDKErrorArgumentValueKey.
W 52  */
13e53a 53 FOUNDATION_EXPORT NSErrorUserInfoKey const FBSDKErrorArgumentCollectionKey;
bad748 54
9febd9 55 /**
13e53a 56  The userInfo key for the invalid argument name for errors with FBSDKErrorInvalidArgument.
bad748 57  */
13e53a 58 FOUNDATION_EXPORT NSErrorUserInfoKey const FBSDKErrorArgumentNameKey;
bad748 59
9febd9 60 /**
13e53a 61  The userInfo key for the invalid argument value for errors with FBSDKErrorInvalidArgument.
bad748 62  */
13e53a 63 FOUNDATION_EXPORT NSErrorUserInfoKey const FBSDKErrorArgumentValueKey;
bad748 64
9febd9 65 /**
13e53a 66  The userInfo key for the message for developers in NSErrors that originate from the SDK.
9febd9 67
W 68  The developer message will not be localized and is not intended to be presented within the app.
bad748 69  */
13e53a 70 FOUNDATION_EXPORT NSErrorUserInfoKey const FBSDKErrorDeveloperMessageKey;
bad748 71
9febd9 72 /**
13e53a 73  The userInfo key describing a localized description that can be presented to the user.
bad748 74  */
13e53a 75 FOUNDATION_EXPORT NSErrorUserInfoKey const FBSDKErrorLocalizedDescriptionKey;
bad748 76
9febd9 77 /**
13e53a 78  The userInfo key describing a localized title that can be presented to the user, used with `FBSDKLocalizedErrorDescriptionKey`.
bad748 79  */
13e53a 80 FOUNDATION_EXPORT NSErrorUserInfoKey const FBSDKErrorLocalizedTitleKey;
bad748 81
W 82 /*
83  @methodgroup FBSDKGraphRequest error userInfo keys
84  */
85
9febd9 86 /**
13e53a 87  The userInfo key describing the error category, for error recovery purposes.
9febd9 88
W 89  See `FBSDKGraphErrorRecoveryProcessor` and `[FBSDKGraphRequest disableErrorRecovery]`.
bad748 90  */
13e53a 91 FOUNDATION_EXPORT NSErrorUserInfoKey const FBSDKGraphRequestErrorKey;
H 92
93 FOUNDATION_EXPORT NSErrorUserInfoKey const FBSDKGraphRequestErrorCategoryKey
94 DEPRECATED_MSG_ATTRIBUTE("use FBSDKGraphRequestErrorKey instead");
bad748 95
W 96 /*
13e53a 97  The userInfo key for the Graph API error code.
bad748 98  */
13e53a 99 FOUNDATION_EXPORT NSErrorUserInfoKey const FBSDKGraphRequestErrorGraphErrorCodeKey;
H 100
101 FOUNDATION_EXPORT NSErrorUserInfoKey const FBSDKGraphRequestErrorGraphErrorCode
102 DEPRECATED_MSG_ATTRIBUTE("use FBSDKGraphRequestErrorGraphErrorCodeKey instead");
bad748 103
W 104 /*
13e53a 105  The userInfo key for the Graph API error subcode.
bad748 106  */
13e53a 107 FOUNDATION_EXPORT NSErrorUserInfoKey const FBSDKGraphRequestErrorGraphErrorSubcodeKey;
H 108
109 FOUNDATION_EXPORT NSErrorUserInfoKey const FBSDKGraphRequestErrorGraphErrorSubcode
110 DEPRECATED_MSG_ATTRIBUTE("use FBSDKGraphRequestErrorGraphErrorSubcodeKey instead");
bad748 111
W 112 /*
13e53a 113  The userInfo key for the HTTP status code.
bad748 114  */
13e53a 115 FOUNDATION_EXPORT NSErrorUserInfoKey const FBSDKGraphRequestErrorHTTPStatusCodeKey;
bad748 116
W 117 /*
13e53a 118  The userInfo key for the raw JSON response.
bad748 119  */
13e53a 120 FOUNDATION_EXPORT NSErrorUserInfoKey const FBSDKGraphRequestErrorParsedJSONResponseKey;
H 121
122 #else
123
124 /*
125  @methodgroup error userInfo keys
126  */
bad748 127
9febd9 128 /**
13e53a 129  The userInfo key for the invalid collection for errors with FBSDKErrorInvalidArgument.
H 130
131  If the invalid argument is a collection, the collection can be found with this key and the individual
132  invalid item can be found with FBSDKErrorArgumentValueKey.
133  */
134 FOUNDATION_EXPORT NSString *const FBSDKErrorArgumentCollectionKey;
135
136 /**
137  The userInfo key for the invalid argument name for errors with FBSDKErrorInvalidArgument.
138  */
139 FOUNDATION_EXPORT NSString *const FBSDKErrorArgumentNameKey;
140
141 /**
142  The userInfo key for the invalid argument value for errors with FBSDKErrorInvalidArgument.
143  */
144 FOUNDATION_EXPORT NSString *const FBSDKErrorArgumentValueKey;
145
146 /**
147  The userInfo key for the message for developers in NSErrors that originate from the SDK.
148
149  The developer message will not be localized and is not intended to be presented within the app.
150  */
151 FOUNDATION_EXPORT NSString *const FBSDKErrorDeveloperMessageKey;
152
153 /**
154  The userInfo key describing a localized description that can be presented to the user.
155  */
156 FOUNDATION_EXPORT NSString *const FBSDKErrorLocalizedDescriptionKey;
157
158 /**
159  The userInfo key describing a localized title that can be presented to the user, used with `FBSDKLocalizedErrorDescriptionKey`.
160  */
161 FOUNDATION_EXPORT NSString *const FBSDKErrorLocalizedTitleKey;
162
163 /*
164  @methodgroup FBSDKGraphRequest error userInfo keys
165  */
166
167 /**
168  The userInfo key describing the error category, for error recovery purposes.
169
170  See `FBSDKGraphErrorRecoveryProcessor` and `[FBSDKGraphRequest disableErrorRecovery]`.
171  */
172 FOUNDATION_EXPORT NSString *const FBSDKGraphRequestErrorKey;
173
174 FOUNDATION_EXPORT NSString *const FBSDKGraphRequestErrorCategoryKey
175 DEPRECATED_MSG_ATTRIBUTE("use FBSDKGraphRequestErrorKey instead");
176
177 /*
178  The userInfo key for the Graph API error code.
179  */
180 FOUNDATION_EXPORT NSString *const FBSDKGraphRequestErrorGraphErrorCodeKey;
181
182 FOUNDATION_EXPORT NSString *const FBSDKGraphRequestErrorGraphErrorCode
183 DEPRECATED_MSG_ATTRIBUTE("use FBSDKGraphRequestErrorGraphErrorCodeKey instead");
184
185 /*
186  The userInfo key for the Graph API error subcode.
187  */
188 FOUNDATION_EXPORT NSString *const FBSDKGraphRequestErrorGraphErrorSubcodeKey;
189
190 FOUNDATION_EXPORT NSString *const FBSDKGraphRequestErrorGraphErrorSubcode
191 DEPRECATED_MSG_ATTRIBUTE("use FBSDKGraphRequestErrorGraphErrorSubcodeKey instead");
192
193 /*
194  The userInfo key for the HTTP status code.
195  */
196 FOUNDATION_EXPORT NSString *const FBSDKGraphRequestErrorHTTPStatusCodeKey;
197
198 /*
199  The userInfo key for the raw JSON response.
200  */
201 FOUNDATION_EXPORT NSString *const FBSDKGraphRequestErrorParsedJSONResponseKey;
202
203 #endif
204
205 #ifndef NS_ERROR_ENUM
206 #define NS_ERROR_ENUM(_domain, _name) \
207 enum _name: NSInteger _name; \
208 enum __attribute__((ns_error_domain(_domain))) _name: NSInteger
209 #endif
210
211 /**
212  FBSDKError
213  Error codes for FBSDKErrorDomain.
214  */
215 typedef NS_ERROR_ENUM(FBSDKErrorDomain, FBSDKError)
216 {
217   /**
218    Reserved.
219    */
220   FBSDKErrorReserved = 0,
221
222   /**
223    The error code for errors from invalid encryption on incoming encryption URLs.
224    */
225   FBSDKErrorEncryption,
226
227   /**
228    The error code for errors from invalid arguments to SDK methods.
229    */
230   FBSDKErrorInvalidArgument,
231
232   /**
233    The error code for unknown errors.
234    */
235   FBSDKErrorUnknown,
236
237   /**
238    A request failed due to a network error. Use NSUnderlyingErrorKey to retrieve
239    the error object from the NSURLSession for more information.
240    */
241   FBSDKErrorNetwork,
242
243   /**
244    The error code for errors encountered during an App Events flush.
245    */
246   FBSDKErrorAppEventsFlush,
247
248   /**
249    An endpoint that returns a binary response was used with FBSDKGraphRequestConnection.
250
251    Endpoints that return image/jpg, etc. should be accessed using NSURLRequest
252    */
253   FBSDKErrorGraphRequestNonTextMimeTypeReturned,
254
255   /**
256    The operation failed because the server returned an unexpected response.
257
258    You can get this error if you are not using the most recent SDK, or you are accessing a version of the
259    Graph API incompatible with the current SDK.
260    */
261   FBSDKErrorGraphRequestProtocolMismatch,
262
263   /**
264    The Graph API returned an error.
265
266    See below for useful userInfo keys (beginning with FBSDKGraphRequestError*)
267    */
268   FBSDKErrorGraphRequestGraphAPI,
269
270   /**
271    The specified dialog configuration is not available.
272
273    This error may signify that the configuration for the dialogs has not yet been downloaded from the server
274    or that the dialog is unavailable.  Subsequent attempts to use the dialog may succeed as the configuration is loaded.
275    */
276   FBSDKErrorDialogUnavailable,
277
278   /**
279    Indicates an operation failed because a required access token was not found.
280    */
281   FBSDKErrorAccessTokenRequired,
282
283   /**
284    Indicates an app switch (typically for a dialog) failed because the destination app is out of date.
285    */
286   FBSDKErrorAppVersionUnsupported,
287
288   /**
289    Indicates an app switch to the browser (typically for a dialog) failed.
290    */
291   FBSDKErrorBrowserUnavailable,
292 };
293
294 /**
295  FBSDKGraphRequestError
296  Describes the category of Facebook error. See `FBSDKGraphRequestErrorKey`.
297  */
298 typedef NS_ENUM(NSUInteger, FBSDKGraphRequestError)
299 {
300   /** The default error category that is not known to be recoverable. Check `FBSDKLocalizedErrorDescriptionKey` for a user facing message. */
301   FBSDKGraphRequestErrorOther = 0,
302   /** Indicates the error is temporary (such as server throttling). While a recoveryAttempter will be provided with the error instance, the attempt is guaranteed to succeed so you can simply retry the operation if you do not want to present an alert.  */
303   FBSDKGraphRequestErrorTransient = 1,
304   /** Indicates the error can be recovered (such as requiring a login). A recoveryAttempter will be provided with the error instance that can take UI action. */
305   FBSDKGraphRequestErrorRecoverable = 2
306 };
307
308 /**
309  a formal protocol very similar to the informal protocol NSErrorRecoveryAttempting
bad748 310  */
W 311 @protocol FBSDKErrorRecoveryAttempting<NSObject>
312
9febd9 313 /**
13e53a 314  attempt the recovery
H 315  @param error the error
316  @param recoveryOptionIndex the selected option index
317  @param delegate the delegate
318  @param didRecoverSelector the callback selector, see discussion.
319  @param contextInfo context info to pass back to callback selector, see discussion.
9febd9 320
W 321
bad748 322  Given that an error alert has been presented document-modally to the user, and the user has chosen one of the error's recovery options, attempt recovery from the error, and send the selected message to the specified delegate. The option index is an index into the error's array of localized recovery options. The method selected by didRecoverSelector must have the same signature as:
W 323
324  - (void)didPresentErrorWithRecovery:(BOOL)didRecover contextInfo:(void *)contextInfo;
325
326  The value passed for didRecover must be YES if error recovery was completely successful, NO otherwise.
327  */
328 - (void)attemptRecoveryFromError:(NSError *)error optionIndex:(NSUInteger)recoveryOptionIndex delegate:(id)delegate didRecoverSelector:(SEL)didRecoverSelector contextInfo:(void *)contextInfo;
329
330 @end
13e53a 331
H 332 /**
333  Deprecated
334  */
335 typedef NS_ENUM(NSInteger, FBSDKErrorCode)
336 {
337   FBSDKReservedErrorCode DEPRECATED_MSG_ATTRIBUTE("use FBSDKErrorReserved instead") = 0,
338   FBSDKEncryptionErrorCode DEPRECATED_MSG_ATTRIBUTE("use FBSDKErrorEncryption instead"),
339   FBSDKInvalidArgumentErrorCode DEPRECATED_MSG_ATTRIBUTE("use FBSDKErrorInvalidArgument instead"),
340   FBSDKUnknownErrorCode DEPRECATED_MSG_ATTRIBUTE("use FBSDKErrorUnknown instead"),
341   FBSDKNetworkErrorCode DEPRECATED_MSG_ATTRIBUTE("use FBSDKErrorNetwork instead"),
342   FBSDKAppEventsFlushErrorCode DEPRECATED_MSG_ATTRIBUTE("use FBSDKErrorAppEventsFlush instead"),
343   FBSDKGraphRequestNonTextMimeTypeReturnedErrorCode DEPRECATED_MSG_ATTRIBUTE("use FBSDKErrorGraphRequestNonTextMimeTypeReturned instead"),
344   FBSDKGraphRequestProtocolMismatchErrorCode DEPRECATED_MSG_ATTRIBUTE("use FBSDKErrorGraphRequestProtocolMismatch instead"),
345   FBSDKGraphRequestGraphAPIErrorCode DEPRECATED_MSG_ATTRIBUTE("use FBSDKErrorGraphRequestGraphAPI instead"),
346   FBSDKDialogUnavailableErrorCode DEPRECATED_MSG_ATTRIBUTE("use FBSDKErrorDialogUnavailable instead"),
347   FBSDKAccessTokenRequiredErrorCode DEPRECATED_MSG_ATTRIBUTE("use FBSDKErrorAccessTokenRequired instead"),
348   FBSDKAppVersionUnsupportedErrorCode DEPRECATED_MSG_ATTRIBUTE("use FBSDKErrorAppVersionUnsupported instead"),
349   FBSDKBrowserUnavailableErrorCode DEPRECATED_MSG_ATTRIBUTE("use FBSDKErrorBrowserUnavailable instead"),
350   FBSDKBrowswerUnavailableErrorCode DEPRECATED_MSG_ATTRIBUTE("use FBSDKErrorBrowserUnavailable instead") = FBSDKBrowserUnavailableErrorCode,
351 } DEPRECATED_MSG_ATTRIBUTE("use FBSDKError instead");
352
353 /**
354  Deprecated
355  */
356 typedef NS_ENUM(NSUInteger, FBSDKGraphRequestErrorCategory)
357 {
358   FBSDKGraphRequestErrorCategoryOther DEPRECATED_MSG_ATTRIBUTE("use FBSDKGraphRequestErrorOther instead") = 0,
359   FBSDKGraphRequestErrorCategoryTransient DEPRECATED_MSG_ATTRIBUTE("use FBSDKGraphRequestErrorTransient instead") = 1,
360   FBSDKGraphRequestErrorCategoryRecoverable DEPRECATED_MSG_ATTRIBUTE("use FBSDKGraphRequestErrorRecoverable instead") = 2
361 } DEPRECATED_MSG_ATTRIBUTE("use FBSDKGraphRequestError instead");