未定义的属性:stdClass :: $ followers_count(Undefined property: stdClass::$followers_count)
我正在通过混合身份验证框架工作开发社交粉丝数。我正在学习PHP / MYSQL和API中的这种初学者。我不明白为什么我得到这个的错误。
这是与我的粉丝计数代码的Hybrid auth示例代码。 帮帮我
<?php // start a new session (required for Hybridauth) session_start(); // change the following paths if necessary $config = dirname(__FILE__) . '/hybridauth/hybridauth/config.php'; require_once( "hybridauth/hybridauth/Hybrid/Auth.php" ); try{ // create an instance for Hybridauth with the configuration file path as parameter $hybridauth = new Hybrid_Auth( $config ); // try to authenticate the user with twitter, // user will be redirected to Twitter for authentication, // if he already did, then Hybridauth will ignore this step and return an instance of the adapter $twitter = $hybridauth->authenticate( "Twitter" ); // get the user profile $twitter_user_profile = $twitter->getUserProfile(); echo "Ohai there! U are connected with: <b>{$twitter->id}</b><br />"; echo "As: <b>{$twitter_user_profile->displayName}</b><br />"; // echo "As: <b>{$twitter_user_profile->following}</b><br />"; // debug the user profile } catch( Exception $e ){ // Display the recived error, // to know more please refer to Exceptions handling section on the userguide switch( $e->getCode() ){ case 0 : echo "Unspecified error."; break; case 1 : echo "Hybriauth configuration error."; break; case 2 : echo "Provider not properly configured."; break; case 3 : echo "Unknown or disabled provider."; break; case 4 : echo "Missing provider application credentials."; break; case 5 : echo "Authentification failed. " . "The user has canceled the authentication or the provider refused the connection."; break; case 6 : echo "User profile request failed. Most likely the user is not connected " . "to the provider and he should authenticate again."; $twitter->logout(); break; case 7 : echo "User not connected to the provider."; $twitter->logout(); break; case 8 : echo "Provider does not support this feature."; break; } // well, basically your should not display this to the end user, just give him a hint and move on.. echo "<br /><br /><b>Original error message:</b> " . $e->getMessage(); } require_once 'twitteroauth-master/src/twitteroauth.php'; require_once 'config.php'; require "twitteroauth-master/vendor/autoload.php"; use Abraham\TwitterOAuth\TwitterOAuth; define("CONSUMER_KEY", "*****"); define("CONSUMER_SECRET", "****"); define("OAUTH_TOKEN", "*****"); define("OAUTH_SECRET", "******"); $username = 'kodeordie'; //Your twitter screen name or page name $connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, OAUTH_TOKEN, OAUTH_SECRET); $followers = $connection->get('users/show', array('screen_name' => $username)); $followers = json_decode($followers,true); $f = $followers['followers_count']; echo $f; ?>
Twitteroauth.php
<?php /* * Abraham Williams (abraham@abrah.am) http://abrah.am * * The first PHP Library to support OAuth for Twitter's REST API. */ /** * Twitter OAuth class */ class TwitterOAuth { /* Contains the last HTTP status code returned. */ public $http_code; /* Contains the last API call. */ public $url; /* Set up the API root URL. */ public $host = "https://api.twitter.com/1.1/"; /* Set timeout default. */ public $timeout = 30; /* Set connect timeout. */ public $connecttimeout = 30; /* Verify SSL Cert. */ public $ssl_verifypeer = FALSE; /* Respons format. */ public $format = 'json'; /* Decode returned json data. */ public $decode_json = TRUE; /* Contains the last HTTP headers returned. */ public $http_info; /* Set the useragnet. */ public $useragent = 'TwitterOAuth v0.2.0-beta2'; /* Immediately retry the API call if the response was not successful. */ //public $retry = TRUE; /** * Set API URLS */ function accessTokenURL() { return 'https://api.twitter.com/oauth/access_token'; } function authenticateURL() { return 'https://api.twitter.com/oauth/authenticate'; } function authorizeURL() { return 'https://api.twitter.com/oauth/authorize'; } function requestTokenURL() { return 'https://api.twitter.com/oauth/request_token'; } /** * Debug helpers */ function lastStatusCode() { return $this->http_status; } function lastAPICall() { return $this->last_api_call; } /** * construct TwitterOAuth object */ function __construct($consumer_key, $consumer_secret, $oauth_token = NULL, $oauth_token_secret = NULL) { $this->sha1_method = new OAuthSignatureMethod_HMAC_SHA1(); $this->consumer = new OAuthConsumer($consumer_key, $consumer_secret); if (!empty($oauth_token) && !empty($oauth_token_secret)) { $this->token = new OAuthConsumer($oauth_token, $oauth_token_secret); } else { $this->token = NULL; } } /** * Get a request_token from Twitter * * @returns a key/value array containing oauth_token and oauth_token_secret */ function getRequestToken($oauth_callback) { $parameters = array(); $parameters['oauth_callback'] = $oauth_callback; $request = $this->oAuthRequest($this->requestTokenURL(), 'GET', $parameters); $token = OAuthUtil::parse_parameters($request); $this->token = new OAuthConsumer($token['oauth_token'], $token['oauth_token_secret']); return $token; } /** * Get the authorize URL * * @returns a string */ function getAuthorizeURL($token, $sign_in_with_twitter = TRUE) { if (is_array($token)) { $token = $token['oauth_token']; } if (empty($sign_in_with_twitter)) { return $this->authorizeURL() . "?oauth_token={$token}"; } else { return $this->authenticateURL() . "?oauth_token={$token}"; } } /** * Exchange request token and secret for an access token and * secret, to sign API calls. * * @returns array("oauth_token" => "the-access-token", * "oauth_token_secret" => "the-access-secret", * "user_id" => "9436992", * "screen_name" => "abraham") */ function getAccessToken($oauth_verifier) { $parameters = array(); $parameters['oauth_verifier'] = $oauth_verifier; $request = $this->oAuthRequest($this->accessTokenURL(), 'GET', $parameters); $token = OAuthUtil::parse_parameters($request); $this->token = new OAuthConsumer($token['oauth_token'], $token['oauth_token_secret']); return $token; } /** * One time exchange of username and password for access token and secret. * * @returns array("oauth_token" => "the-access-token", * "oauth_token_secret" => "the-access-secret", * "user_id" => "9436992", * "screen_name" => "abraham", * "x_auth_expires" => "0") */ function getXAuthToken($username, $password) { $parameters = array(); $parameters['x_auth_username'] = $username; $parameters['x_auth_password'] = $password; $parameters['x_auth_mode'] = 'client_auth'; $request = $this->oAuthRequest($this->accessTokenURL(), 'POST', $parameters); $token = OAuthUtil::parse_parameters($request); $this->token = new OAuthConsumer($token['oauth_token'], $token['oauth_token_secret']); return $token; } /** * GET wrapper for oAuthRequest. */ function get($url, $parameters = array()) { $response = $this->oAuthRequest($url, 'GET', $parameters); if ($this->format === 'json' && $this->decode_json) { return json_decode($response); } return $response; } /** * POST wrapper for oAuthRequest. */ function post($url, $parameters = array()) { $response = $this->oAuthRequest($url, 'POST', $parameters); if ($this->format === 'json' && $this->decode_json) { return json_decode($response); } return $response; } /** * DELETE wrapper for oAuthReqeust. */ function delete($url, $parameters = array()) { $response = $this->oAuthRequest($url, 'DELETE', $parameters); if ($this->format === 'json' && $this->decode_json) { return json_decode($response); } return $response; } /** * Format and sign an OAuth / API request */ function oAuthRequest($url, $method, $parameters) { if (strrpos($url, 'https://') !== 0 && strrpos($url, 'http://') !== 0) { $url = "{$this->host}{$url}.{$this->format}"; } $request = OAuthRequest::from_consumer_and_token($this->consumer, $this->token, $method, $url, $parameters); $request->sign_request($this->sha1_method, $this->consumer, $this->token); switch ($method) { case 'GET': return $this->http($request->to_url(), 'GET'); default: return $this->http($request->get_normalized_http_url(), $method, $request->to_postdata()); } } /** * Make an HTTP request * * @return API results */ function http($url, $method, $postfields = NULL) { $this->http_info = array(); $ci = curl_init(); /* Curl settings */ curl_setopt($ci, CURLOPT_USERAGENT, $this->useragent); curl_setopt($ci, CURLOPT_CONNECTTIMEOUT, $this->connecttimeout); curl_setopt($ci, CURLOPT_TIMEOUT, $this->timeout); curl_setopt($ci, CURLOPT_RETURNTRANSFER, TRUE); curl_setopt($ci, CURLOPT_HTTPHEADER, array('Expect:')); curl_setopt($ci, CURLOPT_SSL_VERIFYPEER, $this->ssl_verifypeer); curl_setopt($ci, CURLOPT_HEADERFUNCTION, array($this, 'getHeader')); curl_setopt($ci, CURLOPT_HEADER, FALSE); switch ($method) { case 'POST': curl_setopt($ci, CURLOPT_POST, TRUE); if (!empty($postfields)) { curl_setopt($ci, CURLOPT_POSTFIELDS, $postfields); } break; case 'DELETE': curl_setopt($ci, CURLOPT_CUSTOMREQUEST, 'DELETE'); if (!empty($postfields)) { $url = "{$url}?{$postfields}"; } } curl_setopt($ci, CURLOPT_URL, $url); $response = curl_exec($ci); $this->http_code = curl_getinfo($ci, CURLINFO_HTTP_CODE); $this->http_info = array_merge($this->http_info, curl_getinfo($ci)); $this->url = $url; curl_close ($ci); return $response; } /** * Get the header info to store. */ function getHeader($ch, $header) { $i = strpos($header, ':'); if (!empty($i)) { $key = str_replace('-', '_', strtolower(substr($header, 0, $i))); $value = trim(substr($header, $i + 2)); $this->http_header[$key] = $value; } return strlen($header); } }
I am developing a social followers count via Hybrid auth frame work.I am learning this kinda beginer in PHP/MYSQL and API.I don't understand the error why I am getting this.
This is Hybrid auth example code with my followers count code. Help
<?php // start a new session (required for Hybridauth) session_start(); // change the following paths if necessary $config = dirname(__FILE__) . '/hybridauth/hybridauth/config.php'; require_once( "hybridauth/hybridauth/Hybrid/Auth.php" ); try{ // create an instance for Hybridauth with the configuration file path as parameter $hybridauth = new Hybrid_Auth( $config ); // try to authenticate the user with twitter, // user will be redirected to Twitter for authentication, // if he already did, then Hybridauth will ignore this step and return an instance of the adapter $twitter = $hybridauth->authenticate( "Twitter" ); // get the user profile $twitter_user_profile = $twitter->getUserProfile(); echo "Ohai there! U are connected with: <b>{$twitter->id}</b><br />"; echo "As: <b>{$twitter_user_profile->displayName}</b><br />"; // echo "As: <b>{$twitter_user_profile->following}</b><br />"; // debug the user profile } catch( Exception $e ){ // Display the recived error, // to know more please refer to Exceptions handling section on the userguide switch( $e->getCode() ){ case 0 : echo "Unspecified error."; break; case 1 : echo "Hybriauth configuration error."; break; case 2 : echo "Provider not properly configured."; break; case 3 : echo "Unknown or disabled provider."; break; case 4 : echo "Missing provider application credentials."; break; case 5 : echo "Authentification failed. " . "The user has canceled the authentication or the provider refused the connection."; break; case 6 : echo "User profile request failed. Most likely the user is not connected " . "to the provider and he should authenticate again."; $twitter->logout(); break; case 7 : echo "User not connected to the provider."; $twitter->logout(); break; case 8 : echo "Provider does not support this feature."; break; } // well, basically your should not display this to the end user, just give him a hint and move on.. echo "<br /><br /><b>Original error message:</b> " . $e->getMessage(); } require_once 'twitteroauth-master/src/twitteroauth.php'; require_once 'config.php'; require "twitteroauth-master/vendor/autoload.php"; use Abraham\TwitterOAuth\TwitterOAuth; define("CONSUMER_KEY", "*****"); define("CONSUMER_SECRET", "****"); define("OAUTH_TOKEN", "*****"); define("OAUTH_SECRET", "******"); $username = 'kodeordie'; //Your twitter screen name or page name $connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, OAUTH_TOKEN, OAUTH_SECRET); $followers = $connection->get('users/show', array('screen_name' => $username)); $followers = json_decode($followers,true); $f = $followers['followers_count']; echo $f; ?>
Twitteroauth.php
<?php /* * Abraham Williams (abraham@abrah.am) http://abrah.am * * The first PHP Library to support OAuth for Twitter's REST API. */ /** * Twitter OAuth class */ class TwitterOAuth { /* Contains the last HTTP status code returned. */ public $http_code; /* Contains the last API call. */ public $url; /* Set up the API root URL. */ public $host = "https://api.twitter.com/1.1/"; /* Set timeout default. */ public $timeout = 30; /* Set connect timeout. */ public $connecttimeout = 30; /* Verify SSL Cert. */ public $ssl_verifypeer = FALSE; /* Respons format. */ public $format = 'json'; /* Decode returned json data. */ public $decode_json = TRUE; /* Contains the last HTTP headers returned. */ public $http_info; /* Set the useragnet. */ public $useragent = 'TwitterOAuth v0.2.0-beta2'; /* Immediately retry the API call if the response was not successful. */ //public $retry = TRUE; /** * Set API URLS */ function accessTokenURL() { return 'https://api.twitter.com/oauth/access_token'; } function authenticateURL() { return 'https://api.twitter.com/oauth/authenticate'; } function authorizeURL() { return 'https://api.twitter.com/oauth/authorize'; } function requestTokenURL() { return 'https://api.twitter.com/oauth/request_token'; } /** * Debug helpers */ function lastStatusCode() { return $this->http_status; } function lastAPICall() { return $this->last_api_call; } /** * construct TwitterOAuth object */ function __construct($consumer_key, $consumer_secret, $oauth_token = NULL, $oauth_token_secret = NULL) { $this->sha1_method = new OAuthSignatureMethod_HMAC_SHA1(); $this->consumer = new OAuthConsumer($consumer_key, $consumer_secret); if (!empty($oauth_token) && !empty($oauth_token_secret)) { $this->token = new OAuthConsumer($oauth_token, $oauth_token_secret); } else { $this->token = NULL; } } /** * Get a request_token from Twitter * * @returns a key/value array containing oauth_token and oauth_token_secret */ function getRequestToken($oauth_callback) { $parameters = array(); $parameters['oauth_callback'] = $oauth_callback; $request = $this->oAuthRequest($this->requestTokenURL(), 'GET', $parameters); $token = OAuthUtil::parse_parameters($request); $this->token = new OAuthConsumer($token['oauth_token'], $token['oauth_token_secret']); return $token; } /** * Get the authorize URL * * @returns a string */ function getAuthorizeURL($token, $sign_in_with_twitter = TRUE) { if (is_array($token)) { $token = $token['oauth_token']; } if (empty($sign_in_with_twitter)) { return $this->authorizeURL() . "?oauth_token={$token}"; } else { return $this->authenticateURL() . "?oauth_token={$token}"; } } /** * Exchange request token and secret for an access token and * secret, to sign API calls. * * @returns array("oauth_token" => "the-access-token", * "oauth_token_secret" => "the-access-secret", * "user_id" => "9436992", * "screen_name" => "abraham") */ function getAccessToken($oauth_verifier) { $parameters = array(); $parameters['oauth_verifier'] = $oauth_verifier; $request = $this->oAuthRequest($this->accessTokenURL(), 'GET', $parameters); $token = OAuthUtil::parse_parameters($request); $this->token = new OAuthConsumer($token['oauth_token'], $token['oauth_token_secret']); return $token; } /** * One time exchange of username and password for access token and secret. * * @returns array("oauth_token" => "the-access-token", * "oauth_token_secret" => "the-access-secret", * "user_id" => "9436992", * "screen_name" => "abraham", * "x_auth_expires" => "0") */ function getXAuthToken($username, $password) { $parameters = array(); $parameters['x_auth_username'] = $username; $parameters['x_auth_password'] = $password; $parameters['x_auth_mode'] = 'client_auth'; $request = $this->oAuthRequest($this->accessTokenURL(), 'POST', $parameters); $token = OAuthUtil::parse_parameters($request); $this->token = new OAuthConsumer($token['oauth_token'], $token['oauth_token_secret']); return $token; } /** * GET wrapper for oAuthRequest. */ function get($url, $parameters = array()) { $response = $this->oAuthRequest($url, 'GET', $parameters); if ($this->format === 'json' && $this->decode_json) { return json_decode($response); } return $response; } /** * POST wrapper for oAuthRequest. */ function post($url, $parameters = array()) { $response = $this->oAuthRequest($url, 'POST', $parameters); if ($this->format === 'json' && $this->decode_json) { return json_decode($response); } return $response; } /** * DELETE wrapper for oAuthReqeust. */ function delete($url, $parameters = array()) { $response = $this->oAuthRequest($url, 'DELETE', $parameters); if ($this->format === 'json' && $this->decode_json) { return json_decode($response); } return $response; } /** * Format and sign an OAuth / API request */ function oAuthRequest($url, $method, $parameters) { if (strrpos($url, 'https://') !== 0 && strrpos($url, 'http://') !== 0) { $url = "{$this->host}{$url}.{$this->format}"; } $request = OAuthRequest::from_consumer_and_token($this->consumer, $this->token, $method, $url, $parameters); $request->sign_request($this->sha1_method, $this->consumer, $this->token); switch ($method) { case 'GET': return $this->http($request->to_url(), 'GET'); default: return $this->http($request->get_normalized_http_url(), $method, $request->to_postdata()); } } /** * Make an HTTP request * * @return API results */ function http($url, $method, $postfields = NULL) { $this->http_info = array(); $ci = curl_init(); /* Curl settings */ curl_setopt($ci, CURLOPT_USERAGENT, $this->useragent); curl_setopt($ci, CURLOPT_CONNECTTIMEOUT, $this->connecttimeout); curl_setopt($ci, CURLOPT_TIMEOUT, $this->timeout); curl_setopt($ci, CURLOPT_RETURNTRANSFER, TRUE); curl_setopt($ci, CURLOPT_HTTPHEADER, array('Expect:')); curl_setopt($ci, CURLOPT_SSL_VERIFYPEER, $this->ssl_verifypeer); curl_setopt($ci, CURLOPT_HEADERFUNCTION, array($this, 'getHeader')); curl_setopt($ci, CURLOPT_HEADER, FALSE); switch ($method) { case 'POST': curl_setopt($ci, CURLOPT_POST, TRUE); if (!empty($postfields)) { curl_setopt($ci, CURLOPT_POSTFIELDS, $postfields); } break; case 'DELETE': curl_setopt($ci, CURLOPT_CUSTOMREQUEST, 'DELETE'); if (!empty($postfields)) { $url = "{$url}?{$postfields}"; } } curl_setopt($ci, CURLOPT_URL, $url); $response = curl_exec($ci); $this->http_code = curl_getinfo($ci, CURLINFO_HTTP_CODE); $this->http_info = array_merge($this->http_info, curl_getinfo($ci)); $this->url = $url; curl_close ($ci); return $response; } /** * Get the header info to store. */ function getHeader($ch, $header) { $i = strpos($header, ':'); if (!empty($i)) { $key = str_replace('-', '_', strtolower(substr($header, 0, $i))); $value = trim(substr($header, $i + 2)); $this->http_header[$key] = $value; } return strlen($header); } }
原文:https://stackoverflow.com/questions/34806110
最满意答案
我删除了Eclipse,并使用apt-get重新安装。
我没有删除我的工作区,所以当我再次打开Eclipse时,它记住了我的所有设置,并且Android项目是作为 Android项目打开的。 Git插件也在运行!
它不是“你试过把它关掉再打开”但它已经接近了。
I removed Eclipse, and reinstalled using apt-get.
I hadn't deleted my workspace, so when I opened Eclipse again, it had remembered all my settings, and the Android project was open, as an Android project. The Git plugin was working too!
It's not quite "have you tried turning it off and on again" but it's close.
相关问答
更多-
android 3d游戏开发 所需要的软件[2023-10-23]
eclipse -
安卓应用程序开发使用哪个开发工具最好?[2022-11-21]
eclipse -
安卓手机编程现在用什么软件?并求下载地址。[2022-05-06]
eclipse -
为什么我的Android项目无法在Eclipse中正确加载?(Why is my Android project not loading correctly in Eclipse?)[2022-03-22]
如果这种情况发生在任何人身上,您需要右键单击src文件夹并转到Build Path-> Use as source folder。 然后,如果您的文件夹出现故障,您可以转到项目的构建路径,然后转到“订购和导出”选项卡,然后上下移动src和gen文件夹。 If this ever happens to anyone you need to right click the src folder and go to Build Path->Use as source folder. Then if your fo ... -
之前可以在ProjectA和ProjectB中创建相同的Config类,并从lib项目中排除Config类。 但是现在库项目被包含在jar中,并且不可能在eclipse中从jar中排除类。 我的临时解决方案有config util类,它返回正确的Config,每次构建不同的项目时我都需要更改它。 public class Config { private static MyConfig config; public static MyConfig getConfig() { ...
-
Eclipse和SDK更新后构建Android项目的问题(Problems building Android project after Eclipse and SDK update)[2023-10-19]
看到这个帖子: http://code.google.com/p/android/issues/detail?id=21031 通常有助于转到窗口 - >首选项 - >常规 - >工作区并选中“自动刷新”。 然后尝试逐步清理构建项目。 您可能还必须手动删除代表库依赖项的源包含。 当你有图书馆项目时,你会发现ADT 14和15非常令人沮丧。 它需要经常手动清理库及其相关项目,以使库项目的更改生效。 总而言之,谷歌的努力,但它有点儿麻烦。 另一个类似线程: 更新到ADT 14后无法构建库依赖项目 See thi ... -
您正在尝试将switch / case与String对象一起使用,该对象仅在Java 1.7或更高版本中可用。 Android ADT需要Java 1.6。 这意味着您不能将switch与String结构一起使用。 只需用if / else替换它。 用这个替换你的代码。 String text=mService.getString(); if (Protocols.REQUEST_SEND_MESSAGE.equals(text)) { publishProgress("sent"); } else ...
-
一些建议: 取消选中Project-> Buildmatically Project-> Properties-> Builders:确保检查所有Android(3)和Java(1)构建器(仅此而已) Window-> Preferences-> Android-> Build:选中“在构建时自动刷新资源和资源文件夹” 右键单击项目 - > Android工具 - >修复项目设置(不确定它实际上做了什么,但它不会受到伤害) Some suggestions: Uncheck Project->Build A ...
-
我删除了Eclipse,并使用apt-get重新安装。 我没有删除我的工作区,所以当我再次打开Eclipse时,它记住了我的所有设置,并且Android项目是作为 Android项目打开的。 Git插件也在运行! 它不是“你试过把它关掉再打开”但它已经接近了。 I removed Eclipse, and reinstalled using apt-get. I hadn't deleted my workspace, so when I opened Eclipse again, it had remem ...
-
Eclipse将每个导入的项目命名为启动器活动的名称。 但您可以使用context_menu-> Refactor-> Rename在Eclipse中手动重命名项目。 Eclipse names every imported project as a launcher activity's name. But you can manually rename your project in Eclipse, using context_menu->Refactor->Rename.