Android呼び出しサードパーティQQログインコード共有
6274 ワード
本文はみんなのためにQQを呼び出して登録する関連コードを分かち合って、みんなに役に立つことを望んで、プロジェクトの開発の時間を減らして、具体的な内容は以下の通りです
1、QQオープンプラットフォームに行ってアカウントを登録する(http://open.qq.com/)、アプリケーションのためにQQのAPPを申請します_IDをダウンロードし、関連するjarパッケージをプロジェクトのlibディレクトリの下に置きます.
2、Manifest.xmlにQQ関連のActivityを登録し、コードは以下の通りである.
3、QQ提供の関連APIを利用して関連OPENID、ニックネーム、画像などの資料を取得する.ここで注意したいのは、QQサーバがOPENIDやニックネームなどの他の資料を返すのは2段階に分かれているため、まず戻るOPENIDの速度が速く、ニックネームなどの他の資料を返すのが遅い可能性があるため、OPENIDを返す際には、すでにQQログインに成功していると考えられ、ニックネームなどの他の資料情報を非同期で処理していることです.以下はコードの部分で、すでにプロジェクトテストをしたことがあって、直接使うことができます(対応するAPP_IDを交換すればいいです)
さて、裏コード部分まで書き終わったら、login(Activity context,QqLoginListener loginListener)メソッドを呼び出すだけでいいです.
以上がAndroidがサードパーティのログインを呼び出す詳細な手順と考え方であり、皆さんの学習に役立つことを願っています.
1、QQオープンプラットフォームに行ってアカウントを登録する(http://open.qq.com/)、アプリケーションのためにQQのAPPを申請します_IDをダウンロードし、関連するjarパッケージをプロジェクトのlibディレクトリの下に置きます.
2、Manifest.xmlにQQ関連のActivityを登録し、コードは以下の通りである.
3、QQ提供の関連APIを利用して関連OPENID、ニックネーム、画像などの資料を取得する.ここで注意したいのは、QQサーバがOPENIDやニックネームなどの他の資料を返すのは2段階に分かれているため、まず戻るOPENIDの速度が速く、ニックネームなどの他の資料を返すのが遅い可能性があるため、OPENIDを返す際には、すでにQQログインに成功していると考えられ、ニックネームなどの他の資料情報を非同期で処理していることです.以下はコードの部分で、すでにプロジェクトテストをしたことがあって、直接使うことができます(対応するAPP_IDを交換すればいいです)
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.SocketTimeoutException;
import org.apache.http.conn.ConnectTimeoutException;
import org.json.JSONException;
import org.json.JSONObject;
import android.app.Activity;
import com.smart.util.BroadcastAction;
import com.smart.util.BroadcastUtil;
import com.smart.util.Constant;
import com.smart.util.ILog;
import com.smart.util.PrefUtil;
import com.smart.util.Prefkey;
import com.tencent.open.HttpStatusException;
import com.tencent.open.NetworkUnavailableException;
import com.tencent.tauth.Constants;
import com.tencent.tauth.IRequestListener;
import com.tencent.tauth.IUiListener;
import com.tencent.tauth.Tencent;
import com.tencent.tauth.UiError;
import com.utils.lib.ss.common.ToastHelper;
/**
* QQ 。
* @author E
*/
public class QqLogin {
private static QqLogin qqLogin = null;
public static QqLogin getInstance(){
if (null == qqLogin) {
qqLogin = new QqLogin();
}
return qqLogin;
}
public void login(Activity context , QqLoginListener loginListener){
//Constant.QQ_APP_ID APP_ID
Tencent tencent = Tencent.createInstance(Constant.QQ_APP_ID, context);
if (null == tencent) {
ToastHelper.makeText(context, "error cased !");
return;
}
tencent.login(context, "get_user_info", new BaseUiListener(tencent,loginListener));
}
class BaseUiListener implements IUiListener{
Tencent tencent = null;
QqLoginListener qqLoginListener = null;
public BaseUiListener(Tencent tencent ,QqLoginListener qqLoginListener) {
super();
this.tencent = tencent;
this.qqLoginListener = qqLoginListener;
}
@Override
public void onComplete(JSONObject values) {
try {
String openid = values.getString("openid");
qqLoginListener.onLoginSuccess(openid);
tencent.requestAsync(Constants.GRAPH_SIMPLE_USER_INFO, null, Constants.HTTP_GET,
new BaseApiListener(qqLoginListener) ,null);
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void onError(UiError arg0) {
qqLoginListener.onLoginFail();
}
@Override
public void onCancel() {
qqLoginListener.onCancel();
}
}
class BaseApiListener implements IRequestListener{
QqLoginListener qqLoginListener = null;
public BaseApiListener(QqLoginListener qqLoginListener) {
super();
this.qqLoginListener = qqLoginListener;
}
@Override
public void onComplete(JSONObject jsonObject, Object object) {
try {
ILog.e(jsonObject.toString());
String nickName = jsonObject.getString("nickname");
String figureurl_qq_1 = jsonObject.getString("figureurl_qq_2");
PrefUtil.instance().setPref(Prefkey.THIRD_NICKNAME, nickName);
PrefUtil.instance().setPref(Prefkey.THIRD_IMAGE, figureurl_qq_1);
//
BroadcastUtil.sendBroadcast(BroadcastAction.UPLOAD_THIRD_INFO);
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void onConnectTimeoutException(ConnectTimeoutException arg0,
Object arg1) {
}
@Override
public void onHttpStatusException(HttpStatusException arg0, Object arg1) {
}
@Override
public void onIOException(IOException arg0, Object arg1) {
}
@Override
public void onJSONException(JSONException arg0, Object arg1) {
}
@Override
public void onMalformedURLException(MalformedURLException arg0,
Object arg1) {
}
@Override
public void onNetworkUnavailableException(
NetworkUnavailableException arg0, Object arg1) {
}
@Override
public void onSocketTimeoutException(SocketTimeoutException arg0,
Object arg1) {
}
@Override
public void onUnknowException(Exception arg0, Object arg1) {
}
}
/**
* ,
*/
public static abstract class QqLoginListener{
public void onLoginSuccess(String openid){};
public void onLoginSuccess(String openid, String nickname){};
public void onLoginFail(){};
public void onCancel(){};
}
さて、裏コード部分まで書き終わったら、login(Activity context,QqLoginListener loginListener)メソッドを呼び出すだけでいいです.
以上がAndroidがサードパーティのログインを呼び出す詳細な手順と考え方であり、皆さんの学習に役立つことを願っています.