Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Nasdomlan
1 / 1 / 1
Регистрация: 21.10.2013
Сообщений: 110
#1

VK Api мини профиль - Программирование Android

02.12.2015, 23:06. Просмотров 264. Ответов 0
Метки нет (Все метки)

Привет всем,подскажите пожалуйста,как посредством такой авторизации в приложении
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
package com.perm.kate.api.sample;
 
import com.perm.kate.api.Auth;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.util.Log;
import android.webkit.CookieManager;
import android.webkit.CookieSyncManager;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import com.perm.kate.api.sample.R;
 
public class LoginActivity extends Activity {
    private static final String TAG = "Kate.LoginActivity";
 
    WebView webview;
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.login);
        
        webview = (WebView) findViewById(R.id.vkontakteview);
        webview.getSettings().setJavaScriptEnabled(true);
        webview.clearCache(true);
        
        //Чтобы получать уведомления об окончании загрузки страницы
        webview.setWebViewClient(new VkontakteWebViewClient());
                
        //otherwise CookieManager will fall with java.lang.IllegalStateException: CookieSyncManager::createInstance() needs to be called before CookieSyncManager::getInstance()
        CookieSyncManager.createInstance(this);
        
        CookieManager cookieManager = CookieManager.getInstance();
        cookieManager.removeAllCookie();
        
        String url=Auth.getUrl(Constants.API_ID, Auth.getSettings());
        webview.loadUrl(url);
    }
    
    class VkontakteWebViewClient extends WebViewClient {
        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            super.onPageStarted(view, url, favicon);
            parseUrl(url);
        }
    }
    
    private void parseUrl(String url) {
        try {
            if(url==null)
                return;
            Log.i(TAG, "url="+url);
            if(url.startsWith(Auth.redirect_url))
            {
                if(!url.contains("error=")){
                    String[] auth=Auth.parseRedirectUrl(url);
                    Intent intent=new Intent();
                    intent.putExtra("token", auth[0]);
                    intent.putExtra("user_id", Long.parseLong(auth[1]));
                    setResult(Activity.RESULT_OK, intent);
                }
                finish();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
и передать их сюда(вывести в поля xml)
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
package com.perm.kate.api.sample;
 
import com.perm.kate.api.sample.R;
import com.perm.kate.api.Api;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
 
public class MainActivity extends Activity {
    
    private final int REQUEST_LOGIN=1;
    
    Button authorizeButton;
    Button logoutButton;
    Button postButton;
    
    Account account=new Account();
    Api api;
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        setupUI();
        
        //Восстановление сохранённой сессии
        account.restore(this);
        
        //Если сессия есть создаём API для обращения к серверу
        if(account.access_token!=null)
            api=new Api(account.access_token, Constants.API_ID);
        
        showButtons();
    }
    private void setupUI() {
        authorizeButton=(Button)findViewById(R.id.authorize);
        logoutButton=(Button)findViewById(R.id.logout);
        postButton=(Button)findViewById(R.id.post);
        authorizeButton.setOnClickListener(authorizeClick);
        logoutButton.setOnClickListener(logoutClick);
        postButton.setOnClickListener(postClick);
    }
    
    private OnClickListener authorizeClick=new OnClickListener(){
        @Override
        public void onClick(View v) {
            startLoginActivity();
        }
    };
    
    private OnClickListener logoutClick=new OnClickListener(){
        @Override
        public void onClick(View v) {
            logOut();
        }
    };
    
    private OnClickListener postClick=new OnClickListener(){
        
        public void onClick(View v) {
            startActivity((new Intent(getBaseContext(), MapAct.class)));
            }
    };
    
    private void startLoginActivity() {
        Intent intent = new Intent();
        intent.setClass(this, LoginActivity.class);
        startActivityForResult(intent, REQUEST_LOGIN);
    }
    
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == REQUEST_LOGIN) {
            if (resultCode == RESULT_OK) {
                //авторизовались успешно 
                account.access_token=data.getStringExtra("token");
                account.user_id=data.getLongExtra("user_id", 0);
                account.save(MainActivity.this);
                api=new Api(account.access_token, Constants.API_ID);
                showButtons();
            }
        }
    }
    
    private void logOut() {
        api=null;
        account.access_token=null;
        account.user_id=0;
        account.save(MainActivity.this);
        showButtons();
    }
    
    void showButtons(){
        if(api!=null){
            authorizeButton.setVisibility(View.GONE);
            logoutButton.setVisibility(View.VISIBLE);
            postButton.setVisibility(View.VISIBLE);
        }else{
            authorizeButton.setVisibility(View.VISIBLE);
            logoutButton.setVisibility(View.GONE);
            postButton.setVisibility(View.GONE);
        }
    }
}
Если никто не может помочь просто,готов отблагодарить на пиво)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.12.2015, 23:06     VK Api мини профиль
Посмотрите здесь:

Профиль текущего пользователя - Программирование Android
Привет всем! Как показать в разделе "профиль" : имя, аватарку, фоловеров и т.д. текущего пользователя? Примерно как на картинке.

Мини GoogleUser - Программирование Android
Делать было нечего и я решил создать для примера GoogleUser,и первым делом надо в манифест добавить пермишены: <uses-permission...

Мини-пиложение для Android - Программирование Android
Доброго времени суток всем. Хочу спросить. Вот хочу поздравить друга с ДР. Есть заготовленное видео. Как сделать мини-приложение на...

Мини чат, тонкости разработки - Программирование Android
Например приложение Viber и его аналоги.. Как в них реализован чат? А именно "ListView" с сообщениями. Допустим БД SQLlite с...

Мини игра для Планшетников под Андроид - Программирование Android
Доброго времени суток, Уважаемые разработчики. Я здесь очень давно не был, но в последний раз когда был - был очень благодарен за помощь....

общий API - Программирование Android
Может быть кто нбд подскажет, с чего начать что почитать,любая инфо... Я хочу разработать приложение ,кот подключается к API,допустим VK,...

Maps API - Программирование Android
Даны функции API сделанные на основе Google Maps, как мне их подключить правильно к проекту, дабы возможно было использовать их...

Twitter API v1.1 - Программирование Android
Здравствуйте, здал проект у котором была регистрацыя через twitter API v1.0 ...) Но случилось "очень приятное событие" твитер изменил API...

API 24 и RadioButton - Программирование Android
Здравствуйте, дело в том, что при выборе API 24, Android Studio жалуется на RadioButton, но при с мене на более низкий API все ок, код...

C++ и Android API - Программирование Android
Можно ли как-то юзать Android API на C++? т.е. я хочу сделать приложение на Qt под Android, но, мне нужно использовать API, а насколько я...

Яндекс.Диск API - Программирование Android
Работал кто-нибудь с этим API? Запускаю дефолтный пример яндекса, и при авторизации через браузер показывает вот это: Никто не...

Миграция на Dropbox API v2 - Программирование Android
С 28.06.2017 Dropbox API v1 больше не будет работать. В консоли разработчика есть инструкция по миграцию на API v2 . Я не могу понять,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru