A. 引入新浪微博SDK的weibo4android怎麼不能用,求高手
feeeeeeeeeeee
B. 新浪微博API授權問題:回撥地址如何填寫
可以在高階應用資訊裡面修改域名系結 Host下修改127.0.0.1指向你的回撥域名
設定成引數,每次字串查加就可以了
你把你登入後的資訊儲存到一個SharedPreferences中。然後就可以呼叫判斷了,沒有登入的話就讓他跳到授權頁面,這樣例子,本社群就有幾個,你找找看。。。。
新浪的SDK里有
$o = new WeiboOAuth( WB_AKEY , WB_SKEY );
$keys = $o- > getRequestToken();
$aurl = $o- > getAuthorizeURL( $keys['oauth_token'] ,false , $_SERVER['SCRIPT_URI'].'/callback.php');
你好朋友這情況應當是你登入360的網站或360安全衛士,建議你退出後就會顯示不線上了。
請問您的手機是什麼機型呢?您可以進入i管家--軟體管理--軟體許可權管理中找到新浪微博並開啟相應的許可權的。
下載一直播後使用新浪微博登陸即可,或者再已經注冊的一直播app內系結新浪微博。
下載官方的SDK,在裡面有例項和MD5的簽名工具。
官方SDK
在裡面的簽名工具,根據你輸入的包名來得到MD5值,你需要這個值來正確的建立應用。
在裡面的還有weiboSDK,你需要把它加入你的應用中,引用其中的方法。
在清單中加入訪問網路的許可權
需要在新浪的開放平台建立應用。
建立應用吧!
定義授權引數的介面:
(老實說,我是直接的demo,改為自己的授權資訊就可以了)。
[] view plainprint?
public interface Constants {
/** 當前 DEMO 應用的 APP_KEY,第三方應用應該使用自己的 APP_KEY 替換該 APP_KEY */
public static final String APP_KEY = "1608434710";
public static final String REDIRECT_URL = ":sina.";
public static final String SCOPE =
"email,direct_messages_read,direct_messages_write,"
+ "friendships_groups_read,friendships_groups_write,statuses_to_me_read,"
+ "follow_app_official_microblog," + "invitation_write";
}
快取授權資訊:
[] view plainprint?
/**
* 該類定義了微博授權時所需要的引數。
*/
public class AessTokenKeeper {
private static final String PREFERENCES_NAME = "_weibo_sdk_android";
private static final String KEY_UID = "uid";
private static final String KEY_ACCESS_TOKEN = "aess_token";
private static final String KEY_EXPIRES_IN = "expires_in";
/**
* 儲存 Token 物件到 SharedPreferences。
*
* @param context 應用程式上下文環境
* @param token Token 物件
*/
public static void writeAessToken(Context context, Oauth2AessToken token) {
if (null == context || null == token) {
return;
}
SharedPreferences pref = context.getSharedPreferences(PREFERENCES_NAME, Context.MODE_APPEND);
Editor editor = pref.edit();
editor.putString(KEY_UID, token.getUid());
editor.putString(KEY_ACCESS_TOKEN, token.getToken());
editor.putLong(KEY_EXPIRES_IN, token.getExpiresTime());
editor.mit();
}
/**
* 從 SharedPreferences 讀取 Token 資訊。
*
* @param context 應用程式上下文環境
*
* @return 返回 Token 物件
*/
public static Oauth2AessToken readAessToken(Context context) {
if (null == context) {
return null;
}
Oauth2AessToken token = new Oauth2AessToken();
SharedPreferences pref = context.getSharedPreferences(PREFERENCES_NAME, Context.MODE_APPEND);
token.setUid(pref.getString(KEY_UID, ""));
token.setToken(pref.getString(KEY_ACCESS_TOKEN, ""));
token.setExpiresTime(pref.getLong(KEY_EXPIRES_IN, 0));
return token;
}
/**
* 清空 SharedPreferences 中 Token資訊。
*
* @param context 應用程式上下文環境
*/
public static void clear(Context context) {
if (null == context) {
return;
}
SharedPreferences pref = context.getSharedPreferences(PREFERENCES_NAME, Context.MODE_APPEND);
Editor editor = pref.edit();
editor.clear();
editor.mit();
}
}
整合的sso授權 +獲取使用者名稱:
[] view plainprint?
/**
* 該類主要演示如何進行授權、SSO登陸。
*/
public class WBAuthActivity extends Activity implements OnClickListener {
/** 顯示認證後的資訊,如 AessToken */
private TextView mTokenText;
/** 微博 Web 授權類,提供登陸等功能 */
private WeiboAuth mWeiboAuth;
/** 封裝了 "aess_token","expires_in","refresh_token",並提供了他們的管理功能 */
private Oauth2AessToken mAessToken;
/** 注意:SsoHandler 僅當 SDK 支援 SSO 時有效 */
private SsoHandler mSsoHandler;
/** 使用者資訊介面 */
private UsersAPI mUsersAPI;
private Button ssoBtn;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.acy_sinasso);
initView();
}
public void initView() {
mTokenText = (TextView) findViewById(R.id.tv_txt);
SSO 授權
ssoBtn = (Button) findViewById(R.id.btn_sso);
建立微博例項
mWeiboAuth = new WeiboAuth(this, Constants.APP_KEY,
Constants.REDIRECT_URL, Constants.SCOPE);
從 SharedPreferences 中讀取上次已儲存好 AessToken 等資訊,
第一次啟動本應用,AessToken 不可用
mAessToken = AessTokenKeeper.readAessToken(this);
if (mAessToken.isSessionValid()) {
updateTokenView(true);
}
ssoBtn.setOnClickListener(this);
}
/**
* 當 SSO 授權 Activity 退出時,該函式被呼叫。
*/
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
SSO 授權回撥
重要:發起 SSO 登陸的 Activity 必須重寫 onActivityResult
if (mSsoHandler != null) {
mSsoHandler.authorizeCallBack(requestCode, resultCode, data);
}
}
/**
* 微博認證授權回撥類。 1. SSO 授權時,需要在 {@link #onActivityResult} 中呼叫
* {@link SsoHandler#authorizeCallBack} 後, 該回調才會被執行。 2. 非 SSO
* 授權時,當授權結束後,該回調就會被執行。 當授權成功後,請儲存該 aess_token、expires_in、uid 等資訊到
* SharedPreferences 中。
*/
class AuthListener implements WeiboAuthListener {
授權完成
@Override
public void onComplete(Bundle values) {
從 Bundle 中解析 Token
mAessToken = Oauth2AessToken.parseAessToken(values);
if (mAessToken.isSessionValid()) {
顯示 Token
updateTokenView(false);
儲存 Token 到 SharedPreferences
AessTokenKeeper.writeAessToken(WBAuthActivity.this,
mAessToken);
Toast.makeText(WBAuthActivity.this, "suess!!",
Toast.LENGTH_SHORT).show();
根據uid 獲取使用者的暱稱,因為uid是在回撥方法從伺服器傳遞過來的資料中。
long uid = Long.parseLong(mAessToken.getUid());
mUsersAPI.show(uid, mListener);
} else {
以下幾種情況,您會收到 Code:
1. 當您未在平台上注冊的應用程式的包名與簽名時;
2. 當您注冊的應用程式包名與簽名不正確時;
3. 當您在平台上注冊的包名和簽名與您當前測試的應用的包名和簽名不匹配時。
Toast.makeText(WBAuthActivity.this, "fail", Toast.LENGTH_LONG)
.show();
}
}
取消授權
@Override
public void onCancel() {
Toast.makeText(WBAuthActivity.this, "cancel", Toast.LENGTH_LONG)
.show();
}
授權異常
@Override
public void onWeiboException(WeiboException e) {
Toast.makeText(WBAuthActivity.this,
"Auth exception : " + e.getMessage(), Toast.LENGTH_LONG)
.show();
}
}
/**
* 顯示當前 Token 資訊。 配置檔案中是否已存在 token 資訊並且合法
*/
public void updateTokenView(boolean hasExisted) {
獲取使用者資訊介面
mUsersAPI = new UsersAPI(mAessToken);
String date = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss")
.format(new java.util.Date(mAessToken.getExpiresTime()));
String format = getString(R.string.weibosdk_demo_token_to_string_format_1);
mTokenText
.setText(String.format(format, mAessToken.getToken(), date));
String message = String.format(format, mAessToken.getToken(), date);
if (hasExisted) {
message = getString(R.string.weibosdk_demo_token_has_existed)
+ "
" + message;
根據uid 獲取使用者的暱稱,因為uid是在回撥方法從伺服器傳遞過來的資料中。
long uid = Long.parseLong(mAessToken.getUid());
mUsersAPI.show(uid, mListener);
}
mTokenText.setText(message);
}
/**
* 微博 OpenAPI 回撥介面。
*/
private RequestListener mListener = new RequestListener() {
@Override
public void onComplete(String response) {
if (!TextUtils.isEmpty(response)) {
呼叫 User#parse 將JSON串解析成User物件
User user = User.parse(response);
if (user != null) {
Toast.makeText(WBAuthActivity.this,
"獲取User資訊成功,使用者暱稱:" + user.screen_name,
Toast.LENGTH_LONG).show();
mTokenText.setText(user.screen_name);
} else {
Toast.makeText(WBAuthActivity.this, response,
Toast.LENGTH_LONG).show();
}
}
}
@Override
public void onWeiboException(WeiboException e) {
ErrorInfo info = ErrorInfo.parse(e.getMessage());
Toast.makeText(WBAuthActivity.this, info.toString(),
Toast.LENGTH_LONG).show();
}
};
@Override
public void onClick(View v) {
TODO Auto-generated method stub
if (v == ssoBtn) {
mSsoHandler = new SsoHandler(WBAuthActivity.this, mWeiboAuth);
mSsoHandler.authorize(new AuthListener());
}
}
}
布局:
[] view plainprint?
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android=":schemas.android./apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<.sina.weibo.sdk.widget.LoginButton
android:id="@+id/btn_sso"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp" />
<TextView
android:id="@+id/tv_txt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="info" />
</LinearLayout>
4.當然,想使用這個功能,首先得有本地客戶端,否則的話,會使用web的授權方式,慢慢的輸入賬戶和密碼來獲取授權。
使新浪微博支援SSO授權有以下步驟:
新增URL scheme,在你的工程設定項,targets 一欄下,選中自己的 target,在 Info->URL Types 中新增 URL Schemes,此值是 sso 登入時回撥時所用。如果使用的是Xcode3或更低版本,則需要在plist檔案中新增。如果你使用我們預設的新浪微博賬號的話,將url scheme修改為「sinaweibosso.126663232」,否則是「sinaweibosso.你的新浪微博appkey」。
在你的`AppDelegate`檔案裡面`#import "UMSocialSnsService.h"`並實現下面的方法:
``` - (BOOL)application:(UIApplication *)application
openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication
annotation:(id)annotation
{ 如果你除了使用我們sdk之外還要處理另外的url,你可以把`handleOpenURL:wxApiDelegate:`的實現復制到你的程式碼裡面,再新增你要處理的url。
return [UMSocialSnsService handleOpenURL:url wxApiDelegate:nil]; }
如果是2.1.3 以上版本:
新增URL scheme,在你的工程設定項,targets 一欄下,選中自己的 target,在 Info->URL Types 中新增 URL Schemes,此值是 sso 登入時回撥時所用。如果使用的是Xcode3或更低版本,則需要在plist檔案中新增。將url scheme修改為「sina.你的友盟appkey」。
demo中沒有#import "UMSocialSnsService.h"檔案,單擊#import "UMSocial.h"即可。
需要系結安全域名為whalecloud.,檢查一下授權回撥頁是不是填寫了,修改為:sns.whalecloud./sina2/callback就可以。
新增URL scheme,在你的工程設定項,targets 一欄下,選中自己的 target,在 Info->URL Types 中新增 URL Schemes,此值是 sso 登入時回撥時所用。如果使用的是Xcode3或更低版本,則需要在plist檔案中新增。如果你使用我們預設的新浪微博賬號的話,將url scheme修改為「sinaweibosso.126663232」,否則是「sinaweibosso.你的新浪微博appkey」
在你的`AppDelegate`檔案裡面`#import "UMSocialSnsService.h"`並實現下面的方法:
- (BOOL)application:(UIApplication *)application
openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication
annotation:(id)annotation
{
如果你除了使用我們sdk之外還要處理另外的url,你可以把`handleOpenURL:wxApiDelegate:`的實現復制到你的程式碼裡面,再新增你要處理的url。
return [UMSocialSnsService handleOpenURL:url wxApiDelegate:nil];
}
C. android如何實現新浪微博評論,只需要實現這一個功能就行,怎麼調用API和使用SDK
新浪有開放的開發者包啊···看看 具體的還真忘了
D. 利用新浪微博開放平台提供的sdk開發自己的android客戶端問題
adroid 自帶的sdk是1.5的,sina自帶的幾個jar包放到android項目中了嗎,如果放進去了,你可以去下載缺少的jar包,導進去就可以了
E. 求解答新浪微博api報錯
原因分析:
sdk版本不符,文件內所寫的版本過低。
導入的jar包是雙份sdk高版本出現這個問題。官方Demo不用導入weibo.sdk.android.sso.jar這個包。在工程weibo.sdk.android.sso.demo中已經包含了weibo.sdk.android.sso.jar的源代碼。
默認編碼格式與文件格式不符。
demo里有個apiBtn代碼多餘。
F. 新浪微博中的android sdk中的example如何測試
1、SDK example本身就是一個工程,導入到Eclipse中就好了,注意會有一個錯誤。修改好直接就可以運行測試了。通過OAuth認證登錄,顯示微博列表。
2、網路中搜「ppy2790博客」中有新浪微博開發系列文章。很詳細。