第三方登录之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
- 第三方登录之QQ登录集成(二)
- 集成QQ第三方登录
- 第三方登录之QQ登录集成(一)
- 第三方登录之QQ
- 第三方登录之QQ
- 第三方之QQ登录
- iOS 第三方登录之 QQ登录
- java 第三方登录之QQ登录
- java 第三方登录之QQ登录
- 网站集成第三方登录--QQ
- 友盟集成QQ第三方登录
- Android开发技巧之:QQ第三方登录(二)
- Android QQ第三方登录(二)
- QQ第三方登录
- QQ第三方登录
- QQ第三方登录
- QQ第三方登录
- QQ第三方登录
- C++primer 第四章
- android alertdialog不能弹出弹窗问题
- [算法]2016.9.4
- java集合类
- Java基础零碎知识
- 第三方登录之QQ登录集成(二)
- 二进制中1的个数——剑指offer
- java异常类处理
- [MFC] 对话框文件拖拽
- php://input的细节问题
- final finally finalize三者有什么区别
- AutoItLibrary封装上传文件
- 复管陶笛简介
- Android Manifest 节点和权限描述大全