Files
UnrealEngine/Engine/Plugins/Online/OnlineSubsystemFacebook/Source/Private/Android/OnlineSharingFacebook.h
2025-05-18 13:04:45 +08:00

70 lines
3.0 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
// Module includes
#include "OnlineSharingFacebookCommon.h"
#include "OnlineSubsystemFacebookPackage.h"
class FOnlineSubsystemFacebook;
enum class EFacebookLoginResponse : uint8;
/**
* Delegate fired when the Facebook Android SDK has completed a permissions update request
*
* @param InResponseCode response from the Facebook SDK
* @param InAccessToken access token if the response was RESPONSE_OK
*/
DECLARE_MULTICAST_DELEGATE_FourParams(FOnFacebookRequestPermissionsOpComplete, EFacebookLoginResponse /*InResponseCode*/, const FString& /*InAccessToken*/, const TArray<FString>& /*GrantedPermissions*/, const TArray<FString>& /*DeclinedPermissions*/);
typedef FOnFacebookRequestPermissionsOpComplete::FDelegate FOnFacebookRequestPermissionsOpCompleteDelegate;
/**
* Facebook implementation of the Online Sharing Interface
*/
class FOnlineSharingFacebook : public FOnlineSharingFacebookCommon
{
public:
//~ Begin IOnlineSharing Interface
virtual bool RequestNewReadPermissions(int32 LocalUserNum, EOnlineSharingCategory NewPermissions) override;
virtual bool RequestNewPublishPermissions(int32 LocalUserNum, EOnlineSharingCategory NewPermissions, EOnlineStatusUpdatePrivacy Privacy) override;
//~ End IOnlineSharing Interface
/**
* Constructor used to indicate which OSS we are a part of
*/
FOnlineSharingFacebook(FOnlineSubsystemFacebook* InSubsystem);
/**
* Default destructor
*/
virtual ~FOnlineSharingFacebook();
PACKAGE_SCOPE:
/**
* Delegate fired internally when the Java Facebook SDK has completed, notifying any OSS listeners
* Not meant for external use
*
* @param InResponseCode response from the FacebookSDK
* @param InAccessToken access token from the FacebookSDK if login was successful
* @param GrantedPermissions list of Facebook permission names granted when using the token
* @param DeclinedPermissions list of Facebook permission names declined when using the token
*/
DEFINE_ONLINE_DELEGATE_FOUR_PARAM(OnFacebookRequestPermissionsOpComplete, EFacebookLoginResponse /*InResponseCode*/, const FString& /*InAccessToken*/, const TArray<FString>& /*GrantedPermissions*/, const TArray<FString>& /*DeclinedPermissions*/);
private:
/** Generic handler for both read/publish permissions requests */
void OnPermissionsOpFailed();
void OnPermissionsOpComplete(EFacebookLoginResponse InResponseCode, const FString& InAccessToken, const TArray<FString>& GrantedPermissions, const TArray<FString>& DeclinedPermissions);
/** Delegate holder for all internal related permissions callbacks */
DECLARE_DELEGATE_FourParams(FOnPermissionsOpComplete, EFacebookLoginResponse /*InLoginResponse*/, const FString& /*AccessToken*/, const TArray<FString>& /*GrantedPermissions*/, const TArray<FString>& /*DeclinedPermissions*/);
FOnPermissionsOpComplete PermissionsOpCompletionDelegate;
FDelegateHandle OnFBRequestPermissionsOpCompleteHandle;
};
typedef TSharedPtr<FOnlineSharingFacebook, ESPMode::ThreadSafe> FOnlineSharingFacebookPtr;