Skip to content

Commit a1d292b

Browse files
authored
Merge pull request game-by-virtuals#155 from game-by-virtuals/twitter-plugin/yang-improve-error-log
[Twitter Plugin] Improve Error Log
2 parents 7fa31f0 + 67ce71a commit a1d292b

2 files changed

Lines changed: 33 additions & 3 deletions

File tree

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
GAME_TWITTER_ACCESS_TOKEN=apx-<game-twitter-access-token>
2+
3+
TWITTER_BEARER_TOKEN=<twitter-bearer-token>
4+
TWITTER_API_KEY=<twitter-api-key>
5+
TWITTER_API_SECRET_KEY=<twitter-api-secret-key>
6+
TWITTER_ACCESS_TOKEN=<twitter-access-token>
7+
TWITTER_ACCESS_TOKEN_SECRET=<twitter-access-token_secret>

plugins/twitter/twitter_plugin_gamesdk/twitter_plugin.py

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,20 @@ def __init__(self, options: Dict[str, Any]) -> None:
6161
credentials = options.get("credentials")
6262
if not credentials:
6363
raise ValueError("Twitter API credentials are required.")
64+
65+
# Capture token for internal use
66+
self.game_twitter_access_token = credentials.get("gameTwitterAccessToken")
67+
68+
# Auth gate: require EITHER gameTwitterAccessToken OR full credential set
69+
has_api_credentials = all(
70+
credentials.get(key) for key in ["bearerToken", "apiKey", "apiSecretKey", "accessToken", "accessTokenSecret"]
71+
)
72+
73+
if not self.game_twitter_access_token and not has_api_credentials:
74+
raise ValueError(
75+
"Missing valid authentication. Provide either a 'gameTwitterAccessToken' or all required Twitter API credentials."
76+
)
77+
6478
# Init Tweepy client
6579
self.twitter_client: virtuals_tweepy.Client = virtuals_tweepy.Client(
6680
bearer_token = credentials.get("bearerToken"),
@@ -74,7 +88,16 @@ def __init__(self, options: Dict[str, Any]) -> None:
7488
# Configure logging
7589
logging.basicConfig(level=logging.INFO)
7690
self.logger: logging.Logger = logging.getLogger(__name__)
77-
78-
self.game_twitter_access_token = credentials.get("gameTwitterAccessToken")
79-
8091

92+
self._check_authentication()
93+
94+
def _check_authentication(self) -> None:
95+
"""
96+
Check if the credentials provided are valid by calling the /me endpoint or fetching user info.
97+
"""
98+
try:
99+
user = self.twitter_client.get_me(user_fields=["public_metrics"]).get('data')
100+
self.logger.info(f"Authenticated as: {user.get('name')} (@{user.get('username')})")
101+
except virtuals_tweepy.TweepyException as e:
102+
self.logger.error(f"Authentication failed: {e}")
103+
raise ValueError("Invalid Twitter credentials or failed authentication.")

0 commit comments

Comments
 (0)