Tôi đang làm việc với API Instagram trong magento. Tôi đang tặng phiếu giảm giá cho những người theo dõi instagram của tôi nếu họ theo dõi cửa hàng của chúng tôi trên Instagram.
Tôi đang thực hiện các lệnh gọi API đến instagram bằng PHP bằng cách sử dụng curl. Hiện tại tôi đang gói các lệnh gọi API trong các hàm trợ giúp bên trong mô-đun tùy chỉnh của mình. Thay vào đó tôi có nên gói các cuộc gọi này trong một chức năng bên trong một mô hình không?
Ví dụ. Tôi đang thực hiện cuộc gọi API tới Instagram để xác định xem người dùng hiện tại có đang theo dõi tài khoản của tôi không. Vì vậy, trong bộ điều khiển của tôi, tôi đang thực hiện một cuộc gọi đến chức năng trợ giúp của mình để trả về trạng thái theo dõi cho bộ điều khiển của tôi. Trong bộ điều khiển của tôi, sau đó tôi sẽ cập nhật các mô hình của mình nếu cần thiết.
Tôi có đúng không khi đặt các lệnh gọi API này bên trong các hàm trợ giúp? Khi nào tôi sử dụng người trợ giúp trái ngược với mô hình?
<?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
);
}
}