第三方登录之QQ登录集成(二)

来源:互联网 发布:com域名 编辑:程序博客网 时间:2024/05/22 17:28

上面说到webview方式登录QQ的集成,现在开始客户端登录的集成.首先还是下载客户端的SDK和DEMO,


示例代码如下:

首先清单文件

<?xml version="1.0" encoding="utf-8"?><manifest package="test.example.com.mapp"          xmlns:android="http://schemas.android.com/apk/res/android">    <uses-permission android:name="android.permission.INTERNET" />    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />    <!-- SDK2.1新增获取用户位置信息 -->    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />    <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />    <uses-permission android:name="android.permission.READ_PHONE_STATE" />    <uses-permission android:name="android.permission.GET_TASKS"/>    <application        android:allowBackup="true"        android:icon="@mipmap/ic_launcher"        android:label="@string/app_name"        android:supportsRtl="true"        android:theme="@style/AppTheme">        <activity android:name=".MainActivity">            <intent-filter>                <action android:name="android.intent.action.MAIN"/>                <category android:name="android.intent.category.LAUNCHER"/>            </intent-filter>        </activity>        <activity            android:name="com.tencent.tauth.AuthActivity"            android:launchMode="singleTask"            android:noHistory="true" >            <intent-filter>                <action android:name="android.intent.action.VIEW" />                <category android:name="android.intent.category.DEFAULT" />                <category android:name="android.intent.category.BROWSABLE" />                <data android:scheme="tencent222222" />                <!-- 100380359 100381104 222222 -->            </intent-filter>        </activity>        <activity            android:name="com.tencent.connect.common.AssistActivity"            android:screenOrientation="behind"            android:theme="@android:style/Theme.Translucent.NoTitleBar"            android:configChanges="orientation|keyboardHidden">        </activity>    </application></manifest>
注意,AssistActivity只有在运行代码后,才会在logcat中提示错误信息,告诉需要另外配置该activity


Mainactivity代码

public class MainActivity extends AppCompatActivity implements IUiListener {    private static Tencent mTencent;    private String mAppid = "1105667444";    private TextView mUserInfo;    private ImageView mUserLogo;    private UserInfo mInfo;    public static void initOpenidAndToken(JSONObject jsonObject) {String token = jsonObject.optString(Constants.PARAM_ACCESS_TOKEN);String expires = jsonObject.optString(Constants.PARAM_EXPIRES_IN);String openId = jsonObject.optString(Constants.PARAM_OPEN_ID);if (!TextUtils.isEmpty(token) && !TextUtils.isEmpty(expires) && !TextUtils.isEmpty(openId)) {    mTencent.setAccessToken(token, expires);    mTencent.setOpenId(openId);}    }    @Override    protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//初始化mTencentinit();    }    private void init() {mTencent = Tencent.createInstance(mAppid, this);    }    public void login(View view) {mTencent.login(this, "all", this);    }    @Override    protected void onActivityResult(int requestCode, int resultCode, Intent data) {if (requestCode == Constants.REQUEST_LOGIN || requestCode == Constants.REQUEST_APPBAR) {    //处理返回的结果    Tencent.onActivityResultData(requestCode, resultCode, data, this);}super.onActivityResult(requestCode, resultCode, data);    }    @Override    public void onComplete(Object response) {showToast("登录成功");JSONObject json = (JSONObject) response;//通过返回的数据,获得openid和tokeninitOpenidAndToken(json);//获取用户信息updateUserInfo();    }    private void updateUserInfo() {if (mTencent != null && mTencent.isSessionValid()) {    mInfo = new UserInfo(this, mTencent.getQQToken());    //获取用户信息    mInfo.getUserInfo(listener);}else {    mUserInfo.setText("");    mUserInfo.setVisibility(android.view.View.GONE);    mUserLogo.setVisibility(android.view.View.GONE);}    }    private IUiListener listener = new IUiListener() {@Overridepublic void onComplete(Object response) {    //成功获取的回调.在这里乐意获取用户的头像,昵称等信息    showToast(response.toString());}@Overridepublic void onError(UiError uiError) {}@Overridepublic void onCancel() {}    };    public void showToast(String s) {Toast.makeText(this, s, Toast.LENGTH_SHORT).show();    }    @Override    public void onError(UiError uiError) {showToast("登录失败");    }    @Override    public void onCancel() {showToast("取消登陆");    }}





0 0
原创粉丝点击