/* * Copyright 2010 Facebook * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #import #import "FBSession.h" #import "FBGraphUser.h" @protocol FBLoginViewDelegate; /*! @class FBLoginView @abstract FBLoginView is a custom UIView that renders a button to login or logout based on the state of `FBSession.activeSession` @discussion This view is closely associated with `FBSession.activeSession`. Upon initialization, it will attempt to open an active session without UI if the current active session is not open. The FBLoginView instance also monitors for changes to the active session. */ @interface FBLoginView : UIView /*! @abstract The permissions to login with. Defaults to nil, meaning basic permissions. @discussion Methods and properties that specify permissions without a read or publish qualification are deprecated; use of a read-qualified or publish-qualified alternative is preferred. */ @property (readwrite, copy) NSArray *permissions __attribute__((deprecated)); /*! @abstract The read permissions to request if the user logs in via this view. @discussion Note, that if read permissions are specified, then publish permissions should not be specified. */ @property (nonatomic, copy) NSArray *readPermissions; /*! @abstract The publish permissions to request if the user logs in via this view. @discussion Note, that a defaultAudience value of FBSessionDefaultAudienceOnlyMe, FBSessionDefaultAudienceEveryone, or FBSessionDefaultAudienceFriends should be set if publish permissions are specified. Additionally, when publish permissions are specified, then read should not be specified. */ @property (nonatomic, copy) NSArray *publishPermissions; /*! @abstract The default audience to use, if publish permissions are requested at login time. */ @property (nonatomic, assign) FBSessionDefaultAudience defaultAudience; /*! @abstract Initializes and returns an `FBLoginView` object. The underlying session has basic permissions granted to it. */ - (id)init; /*! @method @abstract Initializes and returns an `FBLoginView` object constructed with the specified permissions. @param permissions An array of strings representing the permissions to request during the authentication flow. A value of nil will indicates basic permissions. @discussion Methods and properties that specify permissions without a read or publish qualification are deprecated; use of a read-qualified or publish-qualified alternative is preferred. */ - (id)initWithPermissions:(NSArray *)permissions __attribute__((deprecated)); /*! @method @abstract Initializes and returns an `FBLoginView` object constructed with the specified permissions. @param readPermissions An array of strings representing the read permissions to request during the authentication flow. A value of nil will indicates basic permissions. */ - (id)initWithReadPermissions:(NSArray *)readPermissions; /*! @method @abstract Initializes and returns an `FBLoginView` object constructed with the specified permissions. @param publishPermissions An array of strings representing the publish permissions to request during the authentication flow. @param defaultAudience An audience for published posts; note that FBSessionDefaultAudienceNone is not valid for permission requests that include publish or manage permissions. */ - (id)initWithPublishPermissions:(NSArray *)publishPermissions defaultAudience:(FBSessionDefaultAudience)defaultAudience; /*! @abstract The delegate object that receives updates for selection and display control. */ @property (nonatomic, assign) IBOutlet id delegate; @end /*! @protocol @abstract The `FBLoginViewDelegate` protocol defines the methods used to receive event notifications from `FBLoginView` objects. */ @protocol FBLoginViewDelegate @optional /*! @abstract Tells the delegate that the view is now in logged in mode @param loginView The login view that transitioned its view mode */ - (void)loginViewShowingLoggedInUser:(FBLoginView *)loginView; /*! @abstract Tells the delegate that the view is has now fetched user info @param loginView The login view that transitioned its view mode @param user The user info object describing the logged in user */ - (void)loginViewFetchedUserInfo:(FBLoginView *)loginView user:(id)user; /*! @abstract Tells the delegate that the view is now in logged out mode @param loginView The login view that transitioned its view mode */ - (void)loginViewShowingLoggedOutUser:(FBLoginView *)loginView; /*! @abstract Tells the delegate that there is a communication or authorization error. @param loginView The login view that transitioned its view mode @param error An error object containing details of the error. @discussion See https://developers.facebook.com/docs/technical-guides/iossdk/errors/ for error handling best practices. */ - (void)loginView:(FBLoginView *)loginView handleError:(NSError *)error; @end