騰訊QQ第三者登録の実現
10020 ワード
テンセントのオープンプラットフォームのトップページ
SDKダウンロードセンター
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<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" />
</intent-filter>
</activity>
<activity android:name="com.tencent.connect.common.AssistActivity" android:configChanges="orientation|keyboardHidden" android:screenOrientation="behind" android:theme="@android:style/Theme.Translucent.NoTitleBar" />
// tencent
tencent = Tencent.createInstance(KEY, getApplicationContext());
/** * , */
tencent.login(MainActivity.this, "all", listener);
ここで取得したのはテンセントが返した唯一の標識(openID、accessTokenなど)
//
private IUiListener listener = new IUiListener() {
@Override
public void onComplete(Object response) {
try {
JSONObject object = new JSONObject(response + "");
int ret = object.getInt("ret");
if (ret == 0) {
Toast.makeText(MainActivity.this, " ", Toast.LENGTH_LONG).show();
String openID = object.getString("openid");
String accessToken = object.getString("access_token");
String expires = object.getString("expires_in");
tencent.setOpenId(openID);
tencent.setAccessToken(accessToken, expires);
/** * , */
UserInfo userInfo = new UserInfo(MainActivity.this, tencent.getQQToken());
userInfo.getUserInfo(new MyIUiListener());
}
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void onError(UiError uiError) {
}
@Override
public void onCancel() {
}
};
次に、ユーザーの基本情報を取得します。
private class MyIUiListener implements IUiListener {
@Override
public void onComplete(Object obj) {
try {
JSONObject object = new JSONObject(obj + "");
String ret = object.getString("ret");
String is_lost = object.getString("is_lost");
String nickname = object.getString("nickname");
String gender = object.getString("gender");
String province = object.getString("province");
String city = object.getString("city");
/** * , */
final String figureurl_qq_2 = object.getString("figureurl_qq_2");
nickName.setText(nickname);
new Thread(new Runnable() {
@Override
public void run() {
Bitmap bitmap = MyUtil.downLoadImage(figureurl_qq_2);
Message message = new Message();
message.obj = bitmap;
handler.sendMessage(message);
}
}).start();
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void onError(UiError uiError) {
}
@Override
public void onCancel() {
}
}
次に共有機能を呼び出します
private void createShare() {
final Bundle params = new Bundle();
params.putInt(QQShare.SHARE_TO_QQ_KEY_TYPE, QQShare.SHARE_TO_QQ_TYPE_DEFAULT);
params.putString(QQShare.SHARE_TO_QQ_TITLE, "a_zhon");
params.putString(QQShare.SHARE_TO_QQ_SUMMARY, " QQ");
params.putString(QQShare.SHARE_TO_QQ_TARGET_URL, "http://blog.csdn.net/a_zhon");
params.putString(QQShare.SHARE_TO_QQ_IMAGE_URL, "http://www.xiufa.com/BJUI/plugins/kindeditor_4.1.10/attached/image/20160427/20160427020327_69298.png");
tencent.shareToQQ(MainActivity.this, params, shareListener);
}
またonActivity Resultメソッドを書き換える必要があります。そうしないとユーザー情報が得られません(書き直さなくてもユーザー情報が得られるようですが、興味のある子供靴は自分で試してみてください)
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
//QQ
if (requestCode == Constants.REQUEST_LOGIN) {
Tencent.onActivityResultData(requestCode, resultCode, data, listener);
}