forked from friendica/friendica-addons
Merge pull request #521 from MrPetovan/bug/4409-twitter-exception
[twitter] Add Exception handling/Fix OAuth usage
This commit is contained in:
commit
d83dbb3172
|
@ -200,11 +200,11 @@ function twitter_settings_post(App $a, $post)
|
|||
return;
|
||||
}
|
||||
// don't check twitter settings if twitter submit button is not clicked
|
||||
if (!x($_POST, 'twitter-submit')) {
|
||||
if (empty($_POST['twitter-disconnect']) && empty($_POST['twitter-submit'])) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (isset($_POST['twitter-disconnect'])) {
|
||||
if (!empty($_POST['twitter-disconnect'])) {
|
||||
/* * *
|
||||
* if the twitter-disconnect checkbox is set, clear the OAuth key/secret pair
|
||||
* from the user configuration
|
||||
|
@ -229,12 +229,20 @@ function twitter_settings_post(App $a, $post)
|
|||
// the token and secret for which the PIN was generated were hidden in the settings
|
||||
// form as token and token2, we need a new connection to Twitter using these token
|
||||
// and secret to request a Access Token with the PIN
|
||||
$connection = new TwitterOAuth($ckey, $csecret, $_POST['twitter-token'], $_POST['twitter-token2']);
|
||||
$token = $connection->oauth("oauth/access_token", ["oauth_verifier" => $_POST['twitter-pin']]);
|
||||
// ok, now that we have the Access Token, save them in the user config
|
||||
PConfig::set(local_user(), 'twitter', 'oauthtoken', $token['oauth_token']);
|
||||
PConfig::set(local_user(), 'twitter', 'oauthsecret', $token['oauth_token_secret']);
|
||||
PConfig::set(local_user(), 'twitter', 'post', 1);
|
||||
try {
|
||||
if (empty($_POST['twitter-pin'])) {
|
||||
throw new Exception(L10n::t('You submitted an empty PIN, please Sign In with Twitter again to get a new one.'));
|
||||
}
|
||||
|
||||
$connection = new TwitterOAuth($ckey, $csecret, $_POST['twitter-token'], $_POST['twitter-token2']);
|
||||
$token = $connection->oauth("oauth/access_token", ["oauth_verifier" => $_POST['twitter-pin']]);
|
||||
// ok, now that we have the Access Token, save them in the user config
|
||||
PConfig::set(local_user(), 'twitter', 'oauthtoken', $token['oauth_token']);
|
||||
PConfig::set(local_user(), 'twitter', 'oauthsecret', $token['oauth_token_secret']);
|
||||
PConfig::set(local_user(), 'twitter', 'post', 1);
|
||||
} catch(Exception $e) {
|
||||
info($e->getMessage());
|
||||
}
|
||||
// reload the Addon Settings page, if we don't do it see Bug #42
|
||||
goaway('settings/connectors');
|
||||
} else {
|
||||
|
@ -288,34 +296,28 @@ function twitter_settings(App $a, &$s)
|
|||
$s .= '</span>';
|
||||
|
||||
if ((!$ckey) && (!$csecret)) {
|
||||
/* * *
|
||||
* no global consumer keys
|
||||
/* no global consumer keys
|
||||
* display warning and skip personal config
|
||||
*/
|
||||
$s .= '<p>' . L10n::t('No consumer key pair for Twitter found. Please contact your site administrator.') . '</p>';
|
||||
} else {
|
||||
/* * *
|
||||
* ok we have a consumer key pair now look into the OAuth stuff
|
||||
*/
|
||||
// ok we have a consumer key pair now look into the OAuth stuff
|
||||
if ((!$otoken) && (!$osecret)) {
|
||||
/* * *
|
||||
* the user has not yet connected the account to twitter...
|
||||
/* the user has not yet connected the account to twitter...
|
||||
* get a temporary OAuth key/secret pair and display a button with
|
||||
* which the user can request a PIN to connect the account to a
|
||||
* account at Twitter.
|
||||
*/
|
||||
$connection = new TwitterOAuth($ckey, $csecret);
|
||||
$result = $connection->oauth('oauth/request_token', ['oauth_callback' => 'oob']);
|
||||
/* * *
|
||||
* make some nice form
|
||||
*/
|
||||
|
||||
$s .= '<p>' . L10n::t('At this Friendica instance the Twitter addon was enabled but you have not yet connected your account to your Twitter account. To do so click the button below to get a PIN from Twitter which you have to copy into the input box below and submit the form. Only your <strong>public</strong> posts will be posted to Twitter.') . '</p>';
|
||||
$s .= '<a href="' . $connection->url('oauth/authorize', ['oauth_token' => $result->oauth_token]) . '" target="_twitter"><img src="addon/twitter/lighter.png" alt="' . L10n::t('Log in with Twitter') . '"></a>';
|
||||
$s .= '<a href="' . $connection->url('oauth/authorize', ['oauth_token' => $result['oauth_token']]) . '" target="_twitter"><img src="addon/twitter/lighter.png" alt="' . L10n::t('Log in with Twitter') . '"></a>';
|
||||
$s .= '<div id="twitter-pin-wrapper">';
|
||||
$s .= '<label id="twitter-pin-label" for="twitter-pin">' . L10n::t('Copy the PIN from Twitter here') . '</label>';
|
||||
$s .= '<input id="twitter-pin" type="text" name="twitter-pin" />';
|
||||
$s .= '<input id="twitter-token" type="hidden" name="twitter-token" value="' . $result->oauth_token . '" />';
|
||||
$s .= '<input id="twitter-token2" type="hidden" name="twitter-token2" value="' . $result->oauth_token_secret . '" />';
|
||||
$s .= '<input id="twitter-token" type="hidden" name="twitter-token" value="' . $result['oauth_token'] . '" />';
|
||||
$s .= '<input id="twitter-token2" type="hidden" name="twitter-token2" value="' . $result['oauth_token_secret'] . '" />';
|
||||
$s .= '</div><div class="clear"></div>';
|
||||
$s .= '<div class="settings-submit-wrapper" ><input type="submit" name="twitter-submit" class="settings-submit" value="' . L10n::t('Save Settings') . '" /></div>';
|
||||
} else {
|
||||
|
|
Loading…
Reference in a new issue