मैं Magento में इंस्टाग्राम एपीआई के साथ काम कर रहा हूं। मैं अपने इंस्टाग्राम फॉलोअर्स को कूपन दे रहा हूं अगर वे इंस्टाग्राम पर हमारे स्टोर को फॉलो करते हैं।
मैं कर्ल का उपयोग करके PHP में इंस्टाग्राम पर एपीआई कॉल कर रहा हूं। वर्तमान में मैं अपने कस्टम मॉड्यूल के अंदर सहायक कार्यों में एपीआई कॉल लपेट रहा हूं। क्या मुझे इसके बजाय एक मॉडल के अंदर एक फ़ंक्शन में इन कॉल्स को लपेटना चाहिए?
उदाहरण के लिए। मैं यह निर्धारित करने के लिए कि वर्तमान उपयोगकर्ता मेरे खाते का अनुसरण कर रहा है, मैं इंस्टाग्राम पर एक एपीआई कॉल कर रहा हूं। इसलिए, अपने कंट्रोलर में, मैं अपने हेल्पर फंक्शन को कॉल कर रहा हूं, जो मेरे कंट्रोलर को फॉलो की स्थिति देता है। अपने नियंत्रक में, मैं यदि आवश्यक हो तो अपने मॉडल को अपडेट करूंगा।
क्या मैं इन एपीआई कॉल को सहायक कार्यों के अंदर डालने में सही हूं? जब मैं मॉडल के विपरीत सहायकों का उपयोग करता हूं?
<?php
class Company_SocialCoupons_InstagramController extends Mage_Core_Controller_Front_Action
{
public function followAction() {
$status = Mage::helper('socialcoupons/instagram')->getFollow();
if ($status == 'follows') {
// 1. ADD DATA TO MY DATABASE using my custom model
// - Ex. Mage::getModel('socialcoupons/instagram')->setInstagramId(*IGID*), etc.
// 2. CREATE COUPON
// 3. EMAIL COUPON TO CUSTOMER
}
}
class Company_SocialCoupons_Helper_Instagram extends Mage_Core_Helper_Abstract
{
public function getfollow() {
$accessToken = $this->getAccessToken();
$relationshipsUrl = 'https://api.instagram.com/v1/users/' . $this->getUserId() . '/relationship?access_token=' . $accessToken;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $relationshipsUrl);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Accept: application/json'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$jsonData = curl_exec($ch);
curl_close($ch);
$response = json_decode($jsonData, true);
$status = $response['data']['outgoing_status'];
return $status;
}
public function generateAccessToken($code) {
// exchange code for access token
$accessTokenUrl = 'https://api.instagram.com/oauth/access_token';
$data = array(
'client_id' => $this->getClientId(),
'client_secret' => $this->getClientSecret(),
'code' => $code,
'grant_type' => 'authorization_code',
'redirect_uri' => $this->getRedirectUri()
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $accessTokenUrl);
curl_setopt($ch, CURLOPT_POST, count($data));
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Accept: application/json'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$jsonData = curl_exec($ch);
curl_close($ch);
$response = json_decode($jsonData, true);
if (isset($response['error_type'])) { // no error
Mage::getSingleton('core/session')->unsInstagramAccessToken();
Mage::getSingleton('core/session')->addError($response['error_message']);
return $this->_redirect('*/*/authorize');
}
$accessToken = $response['access_token'];
$id = $response['user']['id'];
$username = $response['user']['username'];
Mage::getSingleton('core/session')->setInstagramAccessToken($accessToken);
return array(
'id' => $id,
'username' => $username
);
}
}